Gor*_*don 12 java eclipse hibernate jpa jpa-2.0
我正在尝试为一组实体创建一个基类,以减少编码工作和重复.我的想法是基类具有公共元数据字段,子类处理它们的唯一属性.
我的基类:
@MappedSuperclass
public abstract class FinanceEntityBean {
protected Long id;
@Version
private long version;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(final Long id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
第一个实体:
@Entity
@Table(name = "tag")
public class Tag extends FinanceEntityBean {
}
Run Code Online (Sandbox Code Playgroud)
我已经使用此代码编写测试来在Tag实体上执行CRUD功能,并且它们都正常工作.
我的问题是 - 为什么Eclipse(Indigo)坚持认为Tag有错误:
The entity has no primary key attribute defined
我已将此更改为警告,因此我的代码将编译,但我很好奇为什么Eclipse不满意,如果我误解了某些内容.
这是有效的JPA 2.0代码吗?Hibernate 4.1.5是我的JPA提供者.
使用混合访问时,您必须指定访问类型.请参阅Eclipse Dali 错误323527,以便在注释字段和属性时提供更好的验证错误.
选项1:注释getVersion()方法,仅注释属性.
选项2:指定混合访问类型,如下所示:
@MappedSuperclass
@Access(AccessType.PROPERTY)
public abstract class FinanceEntityBean {
protected Long id;
@Version
@Access(AccessType.FIELD)
private long version;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(final Long id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
如果FinanceEntityBean在不同的Eclipse项目中定义Tag,则可能会遇到Dali错误 "其他插件项目中没有主键属性".
解决方法是列出与之关联FinanceEntityBean的persistence.xml文件Tag.
| 归档时间: |
|
| 查看次数: |
16993 次 |
| 最近记录: |