मैं अपने हाइबरनेट मैपिंग को परिभाषित करने के लिए एनोटेशन का उपयोग करने पर विचार कर रहा हूं लेकिन एक समस्या में भाग गया हूं: मैं सामान्य फ़ील्ड (आईडी फ़ील्ड समेत) को परिभाषित करने के लिए बेस इकाई वर्ग का उपयोग करना चाहता हूं, लेकिन मैं अलग-अलग टेबल पीढ़ी की विभिन्न रणनीतियां बनाना चाहता हूं:हाइबरनेट/जेपीए एनोटेशन का उपयोग करके जनरेशन टाइप रणनीति को मैं ओवरराइड कैसे करूं?
@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();
}
यह करने का एक शानदार तरीका है, मेरे लिए काम किया! –