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:可选值生成的主要内容,如果未能解决你的问题,请参考以下文章

Option可选值可选值

Swift语言基础 - for循环与可选值

用返回非可选值的计算属性覆盖返回可选值的计算属性

excel 设置 单元格的值为可选值,可选值设置为某一列。

Swift 中的可选值是啥?

可选值是啥意思?