Spring Data - 如果 MyClass 包含另一个 Map<@Embeddable, @Embeddable>,那么 Map<String, @Embedable MyClass> 能否与 @ElementCollection 保持一致?
SpringData - Can a Map<String, @Embedable MyClass> be persisted with @ElementCollection if MyClass contains another Map<@Embeddable, @Embeddable>?
我目前正在使用 Spring 数据实现 JPA 持久性,目前我无法解决以下问题:
问题
我有一个 @Entity EntityClass,它有一个 Map。这应该很简单,但 MyEmbeddableClass 拥有自己的 Map<@Embeddable, Embeddable。我可以使用 @ElementCollection 注释来实现吗?换句话说,@ElementCollection 成员可以拥有自己的 collections?
@Entity
public class SimpleClass {
...
@Id
private Integer id
@ElementCollection
@CollectionTable(
name="simple_class_map",
joinColumns = {@JoinColumn(name="class_key)}
)
private Map<String, MyEmbeddableClass> firstMap;
}
@Embeddable
public class MyEmbeddableClass {
...
@ElementCollection
@CollectionTable(
name="simple_class_map",
joinColumns = {@JoinColumn(name="class_key)}
)
private Map<OtherEmbeddableClass, Object> secondMap;
}
@Embeddable
public class OtherEmbeddableClass {
private String text;
private String anotherText;
}
不,@ElementCollection
的成员不能包含另一个 @ElementCollection
(至少对于 Hibernate ORM)。
the documentation of Hibernate ORM:
中提到了这一点
Collections of value type include basic and embeddable types. Collections cannot be nested, and, when used in collections, embeddable types are not allowed to define other collections.
我认为其他 JPA 实现也不支持它(但我可能错了)。
我目前正在使用 Spring 数据实现 JPA 持久性,目前我无法解决以下问题:
问题
我有一个 @Entity EntityClass,它有一个 Map
@Entity
public class SimpleClass {
...
@Id
private Integer id
@ElementCollection
@CollectionTable(
name="simple_class_map",
joinColumns = {@JoinColumn(name="class_key)}
)
private Map<String, MyEmbeddableClass> firstMap;
}
@Embeddable
public class MyEmbeddableClass {
...
@ElementCollection
@CollectionTable(
name="simple_class_map",
joinColumns = {@JoinColumn(name="class_key)}
)
private Map<OtherEmbeddableClass, Object> secondMap;
}
@Embeddable
public class OtherEmbeddableClass {
private String text;
private String anotherText;
}
不,@ElementCollection
的成员不能包含另一个 @ElementCollection
(至少对于 Hibernate ORM)。
the documentation of Hibernate ORM:
Collections of value type include basic and embeddable types. Collections cannot be nested, and, when used in collections, embeddable types are not allowed to define other collections.
我认为其他 JPA 实现也不支持它(但我可能错了)。