2016-05-04 58 views
0

可以實施以下id代碼而不是取決於Hibernate @GenericGenerator,僅使用純JPA嗎?自定義@Id發電機沒有休眠

import java.io.Serializable; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import org.hibernate.annotations.GenericGenerator; 

@Entity 
public class MyObject implements Serializable { 

    @Id 
    @GeneratedValue(generator = "uuid") 
    @GenericGenerator(name = "uuid", strategy = "my.IdGenerator") 
    @Column(name = "ID", length = 36, nullable = false) 
    private String id; 

    // ... 
} 
+0

http://stackoverflow.com/questions/4262600/assign-custom-identifier-to-an-id-property –

+0

我認爲是這樣https://dzone.com/articles/jpa-implementation-patterns-6 – RubioRic

回答

0

有這樣做(這意味着它可以通過EclipseLink的實施幾個JPA方法, Hibernate或其他JPA實現)

以下是如何處理序列對象的方法:

@Id 
@javax.persistence.SequenceGenerator(name = "mySequence", sequenceName = "MY_TABLE_SEQ", allocationSize = 1, initialValue = 1) 
@javax.persistence.GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mySequence") 
@Column(name = "MY_TABLE_ID") 
private Integer myTableId; 

而這裏的如何,如果它是一個標識列:

@Id 
@javax.persistence.GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "MY_TABLE_SEQ") 
private Long myTableId; 

同樣,這裏要注意的一點是,這是純粹的JPA,而不是休眠特定的。