我有两个类,看起来像这样:
@PersistenceCapable(detachable="true")
@Inheritance(strategy=InheritanceStrategy.SUBCLASS_TABLE)
public abstract class BasicReference implements Serializable {
private static final long serialVersionUID = 1L;
@Persistent(column="last_modified")
private Date lastModified;
public abstract String getTitle();
public abstract void setTitle(String title);
public Date getLastModified() {
return lastModified;
}
public void setLastModified(Date lastModified) {
this.lastModified = lastModified;
}
}
@PersistenceCapable(table="X_MYENTRY",detachable="true")
@Inheritence(strategy=Inheritence.COMPLETE_TABLE)
public class MyEntry extends BasicReference {
private static final long serialVersionUID = 1L;
@Persistent(column="MYENTRY_ID")
private Integer id;
@Persistent
private String title;
@Override
public String getTitle() {
return title;
}
@Override
public void setTitle(String title) {
this.title = title;
}
public Integer getId() {
return id;
}
}我的数据库模式如下所示:
CREATE TABLE X_MYENTRY (
MYENTRY_ID int identity(1,1),
TITLE varchar(64),
lastModified datetime
)我有许多这样的X_表,每个表都有细微的变化,主要是在某些字段的允许长度内。
现在,当我尝试从持久性管理器进行查询时,我得到一个错误,即无法找到列X_MYENTRY_ID。即使我已经将列名指定为MYENTRY_ID。
在这一点上,我甚至不是真的担心@PrimaryKey,我只是想能够把对象放进去。
我尝试更改注释以使用不同的值。除MYENTRY_ID以外的任何内容都会给我一个错误,说明指定的列不存在。但是,如果我使用MYENTRY_ID,我得到的X_MYENTRY_ID不存在。
作为测试,我尝试更改数据库中的列,但得到了一个不同的错误: org.datanucleus.exceptions.NucleusUserException:列"X_MYENTRY_ID“存在于表"X_MYENTRY”中,并且具有无效的元数据。现有的列是“
我在SQL Server中的表名为X_REFERENCE,主键是REFERENCE_ID int identity(1,1)。在这一点上,我甚至不担心@PrimaryKey,我只想能够读取数据。但是,当我尝试通过PersistenceManager查询时,我在列X_REFERENCE_ID上得到了一个SQL错误。如果我将注释中的列名改为其他名称("YREFERENCE_ID"),它似乎会接受并遵守它。但是"REFERENCE_ID“似乎自动地被"X_REFERENCE_ID”替换了。如果我将测试数据库中的列重命名为X_REFERENCE_ID,则会抛出一个错误,即找不到REFERENCE_ID!
任何让这些id工作的帮助都将不胜感激。
发布于 2011-08-24 03:28:17
移除@Inheritence(strategy=Inheritence.COMPLETE_TABLE)似乎已经成功了!
https://stackoverflow.com/questions/7166256
复制相似问题