2013-03-28 70 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

我不想总是生成。该值可以从外部提供,并且只有在没有提供时才需要生成。 –