【发布时间】:2011-03-05 07:45:36
【问题描述】:
我有一个映射为实体的类以将其保存在数据库中。我有一个 id 字段作为主键,因此每次持久化对象时,都会从序列“myClass_pk_seq”中检索 id 的值,代码如下所示。
@Entity
@Table(name="myObjects")
public class MyClass {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequence")
@SequenceGenerator(name="sequence", sequenceName="myClass_pk_seq", allocationSize=1)
@Column(name="myClassId")
private Integer id;
private Integer code;
...
}
我需要在“代码”属性中添加类似于 id 的内容。我需要一个序列,以便我可以分配给序列的下一个值进行编码(以保留该值,以防用户想要保留它但不保留数据)。我的意思是用户将看到该字段,如果他不知道要输入什么,他可以按下按钮并在屏幕中接收下一个可能的值(他可以接受也可以不接受)。如何在不保留非主键字段的数据的情况下获取 JPA 中定义的序列的下一个值(并增加其值)?
我只想有一个方法,它在与“代码”字段关联的序列上调用 nextval,并返回值。在 JPA 中使用注释的最佳方法是什么?
谢谢。
【问题讨论】:
-
为什么需要“保留”它。为什么不让 JPA 处理呢
-
@Bozho 好的,我已经完全改变了我的问题,所以现在它更有意义了。
标签: java hibernate jpa sequence nextval