Nếu bạn đang sử dụng trình kích hoạt, chiến lược tạo dự kiến là org.hibernate.id.SelectGenerator
. Tuy nhiên, để sử dụng chiến lược này, Hibernate phải có khả năng xác định vị trí hàng được chèn sau khi chèn để xem giá trị mà trình kích hoạt được chỉ định. Có 2 cách để thực hiện việc này.
Đầu tiên là định cấu hình cụ thể trình tạo để cho nó biết một cột xác định khóa duy nhất (ít nhất là về mặt logic) trong bảng:
@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;
Cái khác là thông qua hỗ trợ id tự nhiên của Hibernate:
@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 có thể phù hợp với bạn. Nó thực sự sẽ đi xuống trình điều khiển JDBC và cách (nếu) nó triển khai getGeneratedKeys