情况:我有一个像这样的Map的类:
@Entity
public class Bar {
@Id
@GeneratedValue
private Long id;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "fooMap",
joinColumns = @JoinColumn(name = "One_ID", referencedColumnName = "ID") ,
inverseJoinColumns = @JoinColumn(name = "Two_ID", referencedColumnName = "ID") )
@MapKeyJoinColumn(name = "Bar")
private Map<FooOne, FooTwo> fooMap;
}
像这样的键/值类(FooTwo看起来或多或少相同):
@Entity
public class FooOne {
@Id
@GeneratedValue
private Long id;
@Basic
private String name;
如果我填充 Map 并尝试保留它,我会得到以下异常:
UnitOfWork(117839394) - java.lang.IllegalStateException:在同步期间>通过未标记为cascade> PERSIST:jpa.test.minimalExample.FooOne@2e4389ed的关系找到新对象 .
因为JPA只能级联到作为 Value 实体的-toMany关联的目标 .
JPA一般或EclipseLink作为实现是否提供任何形式的注释以将操作级联到此映射的关键类?我有什么选择?
我知道在FooTwo类作品中添加对FooOne的引用(如下所示):
@Entity
public class FooTwo {
@Id
@GeneratedValue
private Long id;
@OneToOne(cascade = cascadeType.ALL)
private FooOne foo1;
}
如果我可以避免,我宁愿不向我的类中添加任何其他字段 .