我正在考慮使用Annotations來定義我的Hibernate映射,但遇到了一個問題:我想使用基本實體類來定義公共字段(包括ID字段),但我希望不同的表具有不同的ID生成策略:如何使用Hibernate/JPA批註覆蓋GenerationType策略?
@MappedSuperclass
public abstract class Base implements Serializable {
@Id
@Column(name="ID", nullable = false)
private Integer id;
public Integer getId(){return id;}
public void setId(Integer id){this.id = id;}
...
}
@Entity
@Table(name="TABLE_A")
public class TableA extends Base {
// Table_A wants to set an application-defined value for ID
...
}
@Entity
@Table(name="TABLE_B")
public class TableB extends Base {
// How do I specify @GeneratedValue(strategy = AUTO) for ID here?
...
}
有沒有辦法做到這一點?我試過,包括以下內容TableB
但冬眠反對我具有相同的列兩次,似乎錯了:
@Override // So that we can set Generated strategy
@Id
@GeneratedValue(strategy = AUTO)
public Integer getId() {
return super.getId();
}
這是一個相當優雅的做法,爲我工作! – 2012-09-10 19:12:00