यदि आप एक ट्रिगर का उपयोग कर रहे हैं, तो इच्छित पीढ़ी की रणनीति org.hibernate.id.SelectGenerator
है . हालांकि, इस रणनीति का उपयोग करने के लिए, हाइबरनेट को सम्मिलन के बाद सम्मिलित पंक्ति का पता लगाने में सक्षम होना चाहिए, यह देखने के लिए कि ट्रिगर को किस मान को सौंपा गया है, ऐसा करने के 2 तरीके हैं।
सबसे पहले जनरेटर को विशेष रूप से एक कॉलम बताने के लिए कॉन्फ़िगर करना है जो तालिका के भीतर एक अद्वितीय कुंजी (कम से कम तार्किक रूप से) को परिभाषित करता है:
@Id
@Column(name="S_ID")
@GeneratedValue( strategy = "trigger" )
@GenericGenerator(
name="trigger", strategy="org.hibernate.id.SelectGenerator",
parameters = {
@Parameter( name="keys", value="userName" )
}
)
private String s_id;
private String userName;
दूसरा हाइबरनेट के प्राकृतिक-आईडी समर्थन के माध्यम से है:
@Id
@Column(name="S_ID")
@GeneratedValue( strategy = "trigger" )
@GenericGenerator( name="trigger", strategy="org.hibernate.id.SelectGenerator" ) )
private String s_id;
@NaturalId
private String userName;
GenerationType.IDENTITY आपके काम आ सकती है। यह वास्तव में JDBC ड्राइवर के लिए नीचे आ जाएगा और कैसे (यदि) यह लागू करता है getGeneratedKeys