我在我的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,为什么这不起作用?
答案 0 :(得分:0)
尝试根据需要使用@OneToOne或@ManyToOne进行注释。