级联不使用hibernate @Any

时间:2018-03-01 18:03:11

标签: java hibernate jpa

我在我的java代码中使用了hibernate的@Any(一对一)注释。下面是一个代码片段:

@Entity
public class A {
//.. few properties

@Any(metaColumn = @Column(name = "type"), fetch = FetchType.EAGER)
@AnyMetaDef(idType = "long", metaType = "string", metaValues = {@MetaValue(targetEntity = Http.class, value = "http")})
@JoinColumn(name = "protocol_id")
@Cascade({org.hibernate.annotations.CascadeType.ALL})
@Fetch(FetchMode.SELECT)
private Protocol protocol;

//more code

}

现在,当我使用session.update(a)更新字段时,其中a是A的实例,创建了字段协议的新记录,并且不删除较早的记录。期望的结果是当我使用session.update(a)更新并创建新记录时,字段协议的旧记录被删除。由于我使用的是cascadeType ALL,为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

尝试根据需要使用@OneToOne或@ManyToOne进行注释。