Spring + JPA + Hibernate:启动时没有插入

时间:2012-01-18 00:12:55

标签: hibernate spring jpa persist postconstruct

我在启动时使用@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();
   }
}

你知道可能出现什么问题吗?

祝你好运, 米格尔

1 个答案:

答案 0 :(得分:1)

确保事务已提交,而不是回滚。

将@Transactional添加到方法


<强>加了:

第二件事应该是确保考虑@Transactional(readonly=false)注释!如果您使用Spring Proxy AOP(而不是AspectJ),那么这意味着,使用@Transactional(readonly=false)注释的方法必须从另一个bean调用(直接)bean。