我在启动时使用@PostConstruct
注释执行方法。此方法必须检查存储在DB中的表中的值。如果它不存在,则必须插入它。 DB中的值检查是正确完成的,但是如果我必须保留它,它将不会将其写入DB。它不会抛出任何异常,persist()
执行(显然)没有问题,只有值没有插入DB。
此外,一旦一切都结束,如果我手动调用该方法(例如,从Controller),它将正确插入值。
@PostConstruct
public void insertIfNecessary()
{
Request r = Request.findRequestForUser(this.me);
if ( r == null )
{
r = new Request();
r.setOwner(this.me);
r.persist();
}
}
你知道可能出现什么问题吗?
祝你好运, 米格尔
答案 0 :(得分:1)
确保事务已提交,而不是回滚。
将@Transactional添加到方法
<强>加了:强>
第二件事应该是确保考虑@Transactional(readonly=false)
注释!如果您使用Spring Proxy AOP(而不是AspectJ),那么这意味着,使用@Transactional(readonly=false)
注释的方法必须从另一个bean调用(直接)bean。