获得了一些代码:
<div>
<div class="col-md-2" v-for="(post, img) in posts">
<div class="article-image">
<img :src="post.img" />
</div>
</div>
<div class="col-md-6" v-for="(post, title) in posts" v-bind="post.id">
<div class="article">
<div class="card">
<div class="card-body">
<h3 class="card-title">{{ post.title }}</h3>
<h6 class="card-subtitle text-muted">21st Dec 17</h6>
<p class="card-text">{{ post.content }}</p>
</div>
</div>
</div>
</div>
</div>
调试时,我发现在事务提交之前,这个人会反映在数据库中。 我明确地设置了
Session session = sessionFactory.openSession();
Transaction tx = session.getTransaction();
try
{
tx.begin();
Person person = Person.builder().name("JAN").surname("NOWAK").age(30).build();
session.save(person);
tx.commit();
}
尝试了各种hibernate版本,但仍然遇到了问题。
即使我在提交之前抛出异常
<property name="hibernate.connection.autocommit">false</property>
结果相同,将人员添加到数据库是否使用 tx.commit()或NOT 。
修改
将实体生成策略从 IDENTITY 更改为 AUTO 后,它按照我之前的预期工作,在提交后进行DB更改。结果:
try
{
tx.begin();
Person person = Person.builder().name("JAN").surname("NOWAK").age(30).build();
session.save(person);
String s = null;
if (s == null) {
throw new Exception();
}
tx.commit();
}
但有人可以解释为什么会这样吗?
答案 0 :(得分:0)
如果您使用save(),那么您不需要使用tx.commit(),因为save()负责在调用时返回标识符。因此,您提交或不将其值存储在db immidiately中。另一方面,如果你想使用commit(),那么去persist()。这将向您详细解释Here