情况:我有一个像这样的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;
}

如果我可以避免,我宁愿不向我的类中添加任何其他字段 .