当前位置: 首页 > 面试题库 >

使用@EmbeddedId映射时的Eclipse错误

祁嘉木
2023-03-14
问题内容

我有一个带有复合键的实体,因此我使用@Embeddable和@EmbeddedId批注。可嵌入类如下所示:

@Embeddable
public class DitaAdminAccountSkillPK implements Serializable {

  @ManyToOne
  @JoinColumn(name = "admin_id")
  private DitaAdmin admin;

  @ManyToOne
  @JoinColumn(name = "account_id")
  private DitaAccount account;

  //constructor, getters, setters...
}

以及使用它的实体:

@Entity
public class DitaAdminAccountSkill {

  @EmbeddedId
  private DitaAdminAccountSkillPK id;

  //constructor, getters, setters...
}

现在,我想将该实体映射到另一个这样的实体中:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "id.admin")
private List<DitaAdminAccountSkill> accountSkills;

注意 的mappedBy =“id.admin” 是指 管理 字段中 DitaAdminAccountSkillPK 使用
ID 的字段 DitaAdminAccountSkill

这样可以编译运行。但是,在eclipse中显示的错误提示: 在属性“ accountSkills”中,“映射人”值“
id.admin”无法解析为目标实体上的属性。

请注意,这是一个 JPA问题,
表示JPA方面在抱怨。现在,我知道我可以改用@IdClass,但我只是想知道为什么它认为这是一个错误。还是我做错了什么?


问题答案:

根据JPA 2.0规范的 11.1.15节: 不支持在嵌入式id类中定义的关系映射。
但是,即使您自己使用的JPA实施未获得标准本身的正式支持,也 可能会对此提供 支持。

如果是这种情况,您可能要在的Eclipse下关闭对此功能的验证Window -> Preferences -> Java Persistence -> JPA -> Errors/Warnings -> Attributes -> Cannot resolve attribute name



 类似资料:
  • 我将spring boot with JPA用于一个简单的CRUD应用程序。 我有一个带有一个,它有一个通过一对多关系引用两个基本的ID的复合主键。 但是,我得到一个错误,它说 org.hibernate.AnnotationException:针对未映射的类使用@OneTomany或@ManyTomany:Objecta.PrimaryKeys[PrimaryKey]。 这似乎是一个相当普遍的问

  • 所以我在网上搜索了我的问题的答案,但没有找到有帮助的东西,基本上是需要在两个类之间有一个ManyToOne关系,其中一个类有一个EmbeddedId,我要把代码留在这里,错误信息是它给(我使用野蝇来运行服务器)。 公共类InventoryPK实现可序列化{ } @实体@Table(name=“inventario”,schema=“mxnextmob”) 公共类库存扩展基本模型{ } 公共类公司扩

  • 我在Spring Boot JPA应用程序中有以下设置: 可嵌入 原因:org.hibernate.AnnotationException:mappedBy引用了未知的目标实体属性:com.foobar.entity.logSearchHistoryAttr.logSearchHistoryAttrs中的com.foobar.entity.logSearchHistoryAttr.logSearc

  • 问题内容: 尝试创建组合键(EmbeddedId)时,我遇到了Ebean的问题。 这是我所拥有的草案: 注意 :我正在将Ebean 4.1.4与Java 1.6一起使用。 因此,此代码运行良好,但存在一个我正在尝试解决的问题-数据库中的结果表如下所示: entityB_ID [主要] entityA_FK_ID [主要] 实体A_fk 如您所见,考虑到“ entityA_FK_ID”列,最后一列是

  • 我有两个需要映射的继承层次结构。一个层次结构是国内的,另一个是野生的。我有抽象的Domestic动物和具体的DomesticCat和DomesticDog扩展它。在第二个层次结构中,我有抽象的Wild动物和具体的WildCat和WildDog扩展它。我还有另外两个类,分别是WildAnimalFeeder具有Wild动物的成员对象和DomesticAnimalFeeder具有DomesticAni

  • 何时使用{}上的映射。使用Map可以完成的所有事情也可以使用{},除了一件事是设置除string以外的其他类型的键。 输出: 当我可以使用其中任何一种方法做一些事情时,在什么情况下应该使用哪种方法。