这是我的JPA结构:
电影(看级联类型):
@Entity
@Table(name = "movie")
public class Movie {
@Id
@Column(name = "movie_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
//@OneToMany(cascade = CascadeType.ALL, mappedBy = "primaryKey.movie") //stack overflow
@OneToMany(mappedBy = "primaryKey.movie") //works fine
private List<Rating> ratings;
....
}
评分:
@Entity
@Table(name = "rating")
@AssociationOverrides({@AssociationOverride(name = "primaryKey.movie", joinColumns = @JoinColumn(name = "movie_id")),
@AssociationOverride(name = "primaryKey.user", joinColumns = @JoinColumn(name = "imdb_user_id"))})
public class Rating {
@EmbeddedId
private RatingId primaryKey = new RatingId();
@Column(name = "rating_value")
private Integer ratingValue;
.....
}
RatingId:
@Embeddable
public class RatingId implements Serializable{
@ManyToOne
private Movie movie;
@ManyToOne
private User user;
}
当我致电时entityManager.merge(Moviemovie)
,CascadeType.ALL
我得到了。如果删除级联,则合并调用不会引发错误。哪里可能有问题?
我认为这个问题与复合主键有关。在merge
具有相同一对多关系但没有复合ID的另一个实体上执行时没有错误。
StackOverflow是由循环关系引起的。为了避免出现异常,我在多对多表中将键标记为@ManyToOne(fetch =FetchType.LAZY)
。
问题内容: 有没有一种方法可以将两个主键合并为一个,然后级联更新所有受影响的关系?这是场景: 客户(idCustomer int PK,公司varchar(50)等) CustomerContacts(idCustomerContact int PK,idCustomer int FK,名称varchar(50)等) CustomerNotes(idCustomerNote int PK,idCu
我与以下实体类有一个双向的一对多关系: 当然,所有必需的级联选项都是在客户端设置的。但如果在引用现有产品订单时首次持久化新创建的客户端(如本场景所示),则它将不起作用: 已创建并持久化产品订单“%1”。工作正常。 已创建客户端“%2”,并将产品订单“%1”添加到其产品订单列表中。然后它被持久化。不起作用。 我尝试了几个apporach,但没有一个显示出预期的结果。请参阅下面的结果。我在这里阅读了所
我有以下问题。我有3个实体,我使用的是一个单向实体: 一个小测试: 因此,看看上面的测试,如果我使用,在事务提交之后,确实会在持久性上下文中获得Entity1的两个实体,如果我将其更改为,则会在持久性上下文中获得Entity1的一个实体。有谁能解释一下为什么会发生这种情况或者指出一些文档吗?
主要内容:JPA级联删除示例,输出结果级联移除用于指定如果父实体被移除,则其所有相关实体也将被移除。 以下语法用于执行级联删除操作 - JPA级联删除示例 在这个例子中,我们将创建两个相互关联的实体类,但要建立它们之间的依赖关系,我们将执行级联操作。 这个例子包含以下步骤 - 第1步: 在包下创建一个名为的实体类,其中包含属性:,,以及标记为级联规范的类型的对象。 文件: StudentEntity.java - 第2步: 在包下创建
主要内容:级联枚举在JPA中,如果对实体应用了任何操作,那么它只会在该特定实体上执行。 这些操作不适用于与其相关的其他实体。 为了建立相关实体之间的依赖关系,JPA提供了定义级联操作的枚举类型。 这些级联操作可以用任何类型的映射来定义,即一对一,一对多,多对一,多对多。 级联枚举 以下是用于执行级联操作的枚举。 级联操作 描述 PERSIST 在这个级联操作中,如果父实体持久存在,则其所有相关实体也将被持久化。 M
Hy全部 我很难解决次年Spring的jpa问题。假设我有以下简单的数据模型(两个实体之间有单向关系) 和下面的管道来存储它们 下面的测试 最后一次测试(即insertEntity2WithExistingEntity1)失败,出现以下异常 组织。冬眠PersistentObjectException:传递给persist:com的分离实体。实例杰帕德莫。实体1 如果我将Entity2中的Casc