[英]JPA subclass with @IdClass and no attributes
我有一個沒有@Id或@Column屬性的子類實體。
但是我的子類實體具有@IdClass,如下所示
@Entity
@Table(name = "Employee")
@IdClass(EmployeeEntityPK.class)
public class EmployeeEntity extends AbstractEntity {
@Override
public void setName(String name) {
super.setName(name);
}
@Override
public void setLocation(String location) {
super.setLocation(location);
}
@Override
public void setEmpId(Integer empId) {
super.setEmpId(empId);
}
}
當我嘗試部署我的項目時。 我從休眠中得到異常
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547) [rt.jar:1.6.0_17]
at java.util.ArrayList.get(ArrayList.java:322) [rt.jar:1.6.0_17]
at org.hibernate.cfg.AnnotationBinder.getUniqueIdPropertyFromBaseClass(AnnotationBinder.java:2576)
at org.hibernate.cfg.AnnotationBinder.isIdClassPkOfTheAssociatedEntity(AnnotationBinder.java:925)
at org.hibernate.cfg.AnnotationBinder.mapAsIdClass(AnnotationBinder.java:824)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:671)
完整的異常位於http://pastebin.com/SnhQ1ZVQ
Hibernate試圖從我不存在的Entity中找到@Id類。
我該如何解決此問題。
我的超級班如下
@MappedSuperclass
public class AbstractEntity implements Serializable {
@Id
@Column(name = "empId")
private Integer empId;
@Column(name = "Name")
private String name;
@Column(name = "LOCATION")
private String location;
public Integer getEmpId() {
return empId;
}
//along with other getter setters
}
如果我的主鍵具有不止一列,則在要用作Pk的類上使用常規的@Id屬性。 Id類使用@Embeddable注釋。
例:
實體:
@Entity
public class Foo extends AbstractEntity implements Serializable {
private static final long serialVersionUID = 1;
@EmbeddedId
private FooPK id;
//Getter, Setter...
}
EmbeddedId:
@Embeddable
public class FooPK implements Serializable {
private static final long serialVersionUID = 1;
private Integer firstId;
private Integer SecondId;
public FavoritenPK() {
}
// Setter, Getter...
}
編輯:我在MappedSuperclass中有@Id遇到麻煩。 盡量不要將@ Id-Property放在Mapped-Superclass中!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.