0
我有一個休眠實體超級類:如何不inherite標識GeneratedValue休眠(在子類禁用@GeneratedValue)
@MappedSuperclass
public abstract class Pojo_Entity_SuperClass
{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID", unique=true, nullable=false, precision=18, scale=0)
protected long id;
public Long getId() {return id;}
//Other entity fields and methods
}
接下來我inherite其他實體類是這樣的:
@Entity
@Table(name="USR")
public class Usr extends Pojo_Entity_SuperClass
{
//Columns, fileds and others
}
但在某些情況下,我想用「id」字段繼承實體,而不使用@GeneratedValue註釋。 問題是 - 如何禁用@GeneratedValue註釋的id在子類中?
這不是我的情況下的解決方案,因爲我在所有實體中都使用了id,有些類是繼承了三個或更多的級別。我也有很多方法在我的超類上處理id。 – user3566245
也許我應該在休眠時編寫自己的ID生成器,並在我的子類中使用一些註釋來覆蓋它? – user3566245
我更新了我的回覆以適應抽象getId和setId方法。這樣你可以在你的超類方法中引用這些方法。我認爲你可以嘗試將@Id從字段移到方法,它可能是重載,也會覆蓋代。但方法級別[註釋比字段級別更復雜](http://stackoverflow.com/questions/594597/hibernate-annotations-which-is-better-field-or-property-access)。 –