作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
解决方案:设置 Id = null 就可以了。
此代码在 Tomcat 7 上完美运行,但在 Glassfish 4 上仅保存一次。该代码的目的是多次合并对象的同一实例。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<class>entities.Secao</class>
<class>entities.Funcionario</class>
<class>entities.Unidade</class>
<class>entities.Patrimonio</class>
<class>entities.Descricao</class>
<class>entities.Classificacao</class>
<validation-mode>AUTO</validation-mode>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/patrimonio" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="root" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
</persistence-unit>
public void save() {
int i = 0;
EntityManager em = JpaUtil.getEntityManager();
while (i < 10) {
em.merge(item);
i = i + 1;
}
item = new Item();
}
最佳答案
em.merge(item);
更新数据库中的项目,或在不存在时插入项目。因此,如果没有更改,并且刷新设置为自动,则只需要一次合并 - 因为 item
在合并之间不会更改。
如果您想多次存储此item
,则必须em.persist(item)
。如果 @id
列未设置为 generate
,您可能必须更新 pk 属性 - 否则您将遇到 ConstraintViolationException
。
应用程序服务器中的 JPA 实现可能多种多样,因此您可能会在运行时观察到不同的查询。检查您的刷新策略和 JTA 设置。但是,一般来说,当持久化项在与持久化上下文分离时未更改时,不需要合并。
关于java - 多次保存同一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421261/
我是一名优秀的程序员,十分优秀!