我有一個看起來像這樣的兩個類: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