我对春节@Transactional
注解和坚持的误解。我正在使用Spring 3.1,使用JPA和Hibernate。我认为persist意味着,将实体添加到持久性上下文中(但不要执行任何查询,直到提交或刷新),并且注释的含义是用事务包装该方法。春季交易注释,休眠和坚持
但是,在这个简短的例子中,当执行指针到达时,由于名称不能为空(db约束),所以它会失败并产生异常。
import javax.persistence.EntityManager;
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void test() {
Brand brand = new Brand();
entityManager.persist(brand);
brand.setName("test");
}
如果我换setName()
和persist()
,一切正常。然而,我不明白为什么其他解决方法不会这样,因为我认为任何查询都会在方法结束时生成并执行。
有人能解释一下吗?
有趣,有道理,现在我明白了,实际上我有GenerationType.IDENTITY。谢谢 – stivlo