一般使用GenerationType.AUTO即可。
GenerationType.AUTO - identity, sequence, or hilo GenerationType.IDENTITY - MS SQL Server, MySQL GenerationType.SEQUENCE - Oracle @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "...") private Long getId() { return id; }@AccessType
Hibernate存取Domain object的資料有兩種方式,一是透過getter與setter method(access by property),二是直接存取field(access by field),通常是建議使用前者,有封裝的作用。
在Hibernate Annotation中決定存取方式的規則如下:
- 若設有@AccessType,則採用@AccessType之設定。
- 不然則以@Id所在的位置決定,若@Id在property上,則採用access by property,若@Id在field上,則採用access by field。
不管是透過@AccessType設定或@Id所在位置決定,若class設定為access by property,要變更特定的attribute為access by field時,必須將@AccessType("field")放在getter method上。
不管是透過@AccessType設定或@Id所在位置決定,若class設定為access by field,要變更特定的attribute為access by property時,必須將@AccessType("property")放在field上。
最後,@Embedded與@MappedSuperclass的存取規則均同於owning/inherited entity。
沒有留言:
張貼留言