hibernate JPA:可选值生成
Posted
技术标签:
【中文标题】hibernate JPA:可选值生成【英文标题】:hibernate JPA: optional value generation 【发布时间】:2013-03-18 21:44:32 【问题描述】:是否可以在hibernate中设置一个字段在它为空时生成一个值?
这不是主键而是业务键。基本上我有一个带有条形码字段的容器。如果没有指定条码,则自动生成(例如前缀+序号)。
这可能吗,还是我需要创建一个自定义方法来访问下一个序列值?
【问题讨论】:
有一个选项可以提供默认值。 default = '' 之类的东西已用于为一个时间戳字段提供默认日期。 【参考方案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();
【讨论】:
我不想总是生成。该值可以从外部提供,只有在不提供时才需要生成。【参考方案2】:从类本身为条形码分配值。 试试这样的。
int sequencenumber = generateSequence();
String barcode = prefix + sequencenumber;
我还没有尝试过。所以我不确定这是否可行。试试看吧。
还可以看看这个: Setting default values for columns in JPA
【讨论】:
以上是关于hibernate JPA:可选值生成的主要内容,如果未能解决你的问题,请参考以下文章