是否可以在hibernate中设置一个字段,以便在它为null时生成一个值?
这不是主键,而是业务键。基本上我有一个带条形码字段的容器。如果未分配条形码,则自动生成条形码(例如,前缀+序列号)。
这可能吗?还是我需要创建一个自定义方法来访问下一个序列值?
答案 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;
我没试过这个。所以我不确定这是否有效。试一试。
答案 2 :(得分:0)
我发现了一个类似的问题,我会接受已接受的答案,因为它似乎是最灵活的答案。