【问题标题】:JPA EclipseLink ManyToMany with DataJPA EclipseLink ManyToMany with Data
【发布时间】:2011-04-30 03:05:33
【问题描述】:

我目前正在尝试与 JoinTable 中的数据实现多对多关系。 我正在使用 Eclipselink JPA 框架关注 this approach。 但我收到以下异常:

org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:210) ... 23 更多 原因:异常 [EclipseLink-7298] (Eclipse Persistence Services - 2.1.1.v20100817-r8050): org.eclipse.persistence.exceptions.ValidationException 异常描述:来自嵌入式 ID 类 [class de.kapieren.mbm.server.model.UserGroupPK] 的映射 [group] 是此类的无效映射。与嵌入式 ID 规范(来自源 [class de.kapieren.mbm.server.model.GroupMembership] 的属性 [pk])一起使用的可嵌入类只能包含基本映射。删除非基本映射或更改要嵌入的源上的嵌入 ID 规范

有人知道与embeddedId 相关的基本映射的含义是什么吗? 这里有什么问题?

【问题讨论】:

    标签: orm jpa many-to-many eclipselink jpa-2.0


    【解决方案1】:

    EclipseLink 抱怨在用作主键的Embeddable 类中使用非Basic 映射(例如ManyToOne)(即用EmbeddedId 注释)。

    而且根据 JPA 2.0 规范,这确实是不支持的:

    11.1.15 EmbeddedId 注释

    应用了EmbeddedId 注解 到一个持久的字段或属性 实体类或映射超类 表示复合主键 是一个可嵌入的类。可嵌入的 类必须注释为 Embeddable。 关系映射 在嵌入的 id 类中定义 不支持。

    如果我改写一下,EmbeddedId 的 Embeddable 类必须使用标准 JPA 中的 Basic 映射定义实体的每个 id 属性。

    参考文献

    • JPA 2.0 规范
      • 第 11.1.15 节“EmbeddedId 注释”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 2014-11-27
      • 2016-12-01
      • 1970-01-01
      • 2019-03-09
      • 2019-06-16
      • 2019-06-16
      相关资源
      最近更新 更多