【问题标题】:hibernate JPA: optional value generationhibernate JPA:可选值生成
【发布时间】:2013-03-18 21:44:32
【问题描述】:

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

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

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

【问题讨论】:

  • 有一个选项可以提供默认值。 default = '' 之类的东西已用于为一个时间戳字段提供默认日期。

标签: hibernate jpa sequence


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2016-08-13
    • 2017-09-29
    相关资源
    最近更新 更多