我有一个实体,其中一个属性是 insert_time。 插入时间不是在应用程序中填充的,而是通过数据库触发器填充的。
CREATE OR REPLACE TRIGGER ENTITY_NAME_CT
BEFORE INSERT ON ENTITY_NAME
FOR EACH ROW
BEGIN
:new.CREATE_TIME := CURRENT_TIMESTAMP;
END;
如何在我的应用程序中获取插入时间?我知道可以从我的服务中调用实体存储库来搜索具有给定 ID 的实体,但这将开始新的事务并基本上再次获取整个实体,这似乎是一个糟糕的解决方案。可以在存储库的创建方法中获取插入时间吗?实体管理器 refresh() 不会成功,因为它仍然是相同的事务
我的创建方法看起来大致像这样:
@Transactional
public Comment createEntity(Entity entity) {
entityManager.persist(entity);
return entity
}
最佳答案
您可以尝试先刷新再刷新:
@Transactional
public Comment createEntity(Entity entity) {
entityManager.persist(comment);
entityManager.flush();
entityManager.refresh(comment);
return entity
}
只需确保为该连接/事务将刷新模式设置为 FlushModeType.AUTO
而不是 COMMIT
。
关于java - 交易后刷新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53224884/