提问人:SLMORA 提问时间:6/20/2023 更新时间:6/20/2023 访问量:15
在事务提交后,自动递增的值不会保留在持久性对象中,直到会话关闭
Auto incremented value not persist in persistent object after transaction commit until session closed
问:
我有生成的“Id”的实体以及另一个具有自动递增值的属性调用“code”。调用后,持久对象中“code”的值为空事件,数据库将更新值,并尝试在同一会话中从数据库中获取值,从而获得空值。但是对于新会话,自动生成的值将获取到新的持久性对象。session.persist(entity)
transaction.commit()
@Data
@NoArgsConstructor
public class BaseEntity implements Serializable
{
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Integer id;
@Column(name = "code")
@GeneratedValue(strategy= GenerationType.AUTO)
private Integer code;
@Column(name = "note")
private String note;
}
@Override
public Optional<Integer> persist(T entity)
{
Transaction transaction = null;
try{
transaction=session.beginTransaction();
session.persist(entity);
session.flush();
transaction.commit();
return Optional.of(entity.getId());
} catch (Throwable throwable) {
if (transaction != null) {
transaction.rollback();
}
LOGGER.error(ExceptionUtils.getStackTrace(throwable));
throwable.printStackTrace();
}
return Optional.empty();
}
答: 暂无答案
评论