hibernate JPA:可选值生成

时间:2013-03-28 12:40:46

标签: hibernate jpa sequence

是否可以在hibernate中设置一个字段,以便在它为null时生成一个值?

这不是主键,而是业务键。基本上我有一个带条形码字段的容器。如果未分配条形码,则自动生成条形码(例如,前缀+序列号)。

这可能吗?还是我需要创建一个自定义方法来访问下一个序列值?

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

从类本身分配条形码的值。 尝试这样的事情。

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

我没试过这个。所以我不确定这是否有效。试一试。

同时检查一下: Setting default values for columns in JPA

答案 2 :(得分:0)

我发现了一个类似的问题,我会接受已接受的答案,因为它似乎是最灵活的答案。

get next sequence value from database using hibernate