Tag: persist

在使用JPA持久化时是否需要设置实体类的所有字段?

我试图插入一个有3列的表。这个表的主键是许多表的外键有很多一对多和多对多的关系。试图插入我设置所有这些列,但有一些其他设置我不使用的方法。 当我做em.persist到这个class级时,它会抛出nullpointerexception。 知道为什么会这样做吗? 我还必须设置其他class级成员吗? 实体类如下 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package objectRelationalMapping; import java.io.Serializable; import java.util.List; import javax.persistence.*; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; /** * * @author jai */ @Entity @Table(name = “entitymain”) @XmlRootElement @NamedQueries({ @NamedQuery(name = “Entitymain.findAll”, […]

Spring-Data JPA:保存引用现有实体的新实体

问题基本上与下面的问题相同: JPA级联持久化并且对分离实体的引用会抛出PersistentObjectException。 为什么? 我正在创建一个引用现有的独立实体的新实体。 现在,当我在Spring数据存储库中保存此实体时,会抛出exception: org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist 如果我们看一下spring数据JPA源代码中的save()方法,我们看到: public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(entity); } } 如果我们在AbstractEntityInformation查看isNew() public boolean isNew(T entity) { return getId(entity) == null; } 所以基本上如果我保存()一个新实体(id == null) ,spring数据将始终调用persist,因此这种情况总是会失败。 在向集合添加新项目时,这似乎是一个非常典型的用例。 我该如何解决这个问题? 编辑1: 注意: 此问题与如何保存引用Spring JPA中现有实体的新实体没有直接关系? 。 详细说明假设您获得了通过http创建新实体的请求。 然后,您从请求中提取信息并创建您的实体和现有的实体。 因此,他们将永远脱离。