首页 > 解决方案 > 我可以在 entityManager.persist 时用其他 ID 覆盖 @SequenceGenerator 值吗

问题描述

EmployeeID 在运行时被序列 nextval 覆盖,尽管我在服务层中明确设置它。有没有办法限制 seq 值?

我有如下实体类:

@Entity
@Table(name="XYZ")
public class Generator implements Serializable{

@Id
@GeneratedValue(strategy=AUTO, generator="ID_SEQ")
@SequenceGenerator(name="ID_SEQ",sequenceName="ID_SEQ")
@Column(name="EMPLOYEE_ID")
private String EmployeeId;
......

我想在我的服务层将 EmployeeID 的值设置为: setEmployeeId(abc.getEmpID); 然后应用逻辑 - 如果 abc.getEmpID 为空,则应由 SequenceGenerator 获取 EmployeeID。

在 DaoImpl,我保留了一个包含所有 Entity 值的列表: entityManager.persist -> employeeList;

预期的结果是 EmployeeID 应该保留为 abc.getEmpID 仅当它不为空时,否则 EmployeeID 应该是序列 nextval。

标签: hibernatespring-bootspring-data-jpa

解决方案


推荐阅读