Orm Datanucleus是否更改列名?
我有两个类,看起来像这样:Orm Datanucleus是否更改列名?,orm,primary-key,jdo,datanucleus,Orm,Primary Key,Jdo,Datanucleus,我有两个类,看起来像这样: @PersistenceCapable(detachable="true") @Inheritance(strategy=InheritanceStrategy.SUBCLASS_TABLE) public abstract class BasicReference implements Serializable { private static final long serialVersionUID = 1L; @Persistent(column=
@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
)
我的数据库架构如下所示:
@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_uu表,每个表都有细微的变化,大部分在一些字段允许的长度内
现在,当我尝试从持久性管理器进行查询时,我得到一个错误,即找不到列X_MYENTRY_ID。即使我已经将列名指定为MYENTRY\u ID
在这一点上,我甚至都不担心@PrimaryKey,我只是想把对象放进去
我尝试更改注释以使用各种值。除MYENTRY_ID之外的任何内容都会给我一个错误,即指定的列不存在。但是,如果我使用MYENTRY\u ID,我得到的X\u MYENTRY\u ID不存在
作为测试,我尝试更改数据库中的列,但得到了不同的错误:
org.datanucleus.exceptions.NucleusUserException:列“X\u MYENTRY\u ID”存在于表“X\u MYENTRY”中,并且具有无效元数据。现有列为“
SQL Server中的我的表名为X_REFERENCE,主键为REFERENCE_ID int identity(1,1)。此时,我甚至不担心@PrimaryKey,我只是想能够读取其中的数据。但是,每当我尝试通过PersistenceManager查询此数据时,我都会在列X_REFERENCE_ID上收到一个SQL错误。如果我将批注中的列名更改为其他内容(“YREFERENCE_ID”),它似乎会接受并遵守它。但是““引用ID”似乎被自动替换为“X\U引用ID”。如果我将测试数据库中的列重命名为X\U引用ID,它会抛出一个找不到引用ID的错误
如果您能帮助这些id正常工作,我们将不胜感激。删除@inheritance(strategy=inheritance.COMPLETE_TABLE)似乎已经成功了!因为这是错误的…COMPLETE_TABLE仅用于指定继承树的根目录,如所有文档所示