首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datanucleus更改列名?

Datanucleus更改列名?
EN

Stack Overflow用户
提问于 2011-08-24 03:10:35
回答 1查看 366关注 0票数 0

我有两个类,看起来像这样:

代码语言:javascript
复制
@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;
   }

}

我的数据库模式如下所示:

代码语言:javascript
复制
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工作的帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-24 03:28:17

移除@Inheritence(strategy=Inheritence.COMPLETE_TABLE)似乎已经成功了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7166256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档