Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Orm Datanucleus是否更改列名?_Orm_Primary Key_Jdo_Datanucleus - Fatal编程技术网

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仅用于指定继承树的根目录,如所有文档所示