我有一个看起来像这样的两个类:Datanucleus更改列名称?
@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找不到的错误消息!与获得这些身份证的工作将不胜感激。
因为它是错误的... COMPLETE_TABLE仅用于继承树根部的规范,因为所有文档 – DataNucleus