2013-03-28 97 views
0

是否有可能在hibernate中設置一個字段,以便在空值時生成一個值?休眠JPA:可選值生成

這不是主要關鍵,而是業務關鍵。基本上我有一個帶有條形碼字段的容器。如果未分配條形碼,則自動生成(例如,前綴+序列號)。

這是可能的還是我需要創建一個自定義方法來訪問下一個序列值?

+0

沒有給默認值的選項。類似於default =''已經用它來爲一個時間戳字段提供默認日期。 –

回答

0

從班級本身分配條形碼的值。 嘗試這樣的事情。

int sequencenumber = generateSequence(); 
String barcode = prefix + sequencenumber; 

我還沒有試過這個。所以我不確定這是否會奏效。請嘗試一下。

還檢查了這一點: Setting default values for columns in JPA

1

看一看這個:Hibernate JPA Sequence (non-Id) 的想法是爲產生價值BarCode創建一個實體,然後用它作爲你的主要實體的屬性:

@Entity 
public class BarCode{ 

    private static final String PREFIX = "PREFIX"; 

    @Id 
    @GeneratedValue(...) 
    private Long number; 

    public String getBarCodeValue(){ 
     return PREFIX + getNumber(); 
    } 
} 

@Entity 
public class MyEntity { 
    @Id .. 
    private Long id; 

    @OneToOne(...) 
    private BarCode barCode; 

    public String getBarCodeValue(){ 
     return barCode.getBarCodeValue(); 
    } 
} 
+0

我不想總是生成。該值可以從外部提供,並且只有在沒有提供時才需要生成。 –