【问题标题】:Can I access root Entity from embedded?我可以从嵌入式访问根实体吗?
【发布时间】:2018-09-08 07:13:12
【问题描述】:

是否可以从嵌入式对象访问根实体? 我的目标是将一个大类提取到一个小类中,嵌入对象的任何替代方案都可以。

@Entity
public class Address{
  @Embedded
  private City city;
}

public class City{
   private Address address; // I would like to access Address here
}

有错误

Caused by: org.hibernate.MappingException: Could not determine type for Address in City

【问题讨论】:

  • 你为什么想要那个?您当前的结构将是 @OneToOne 映射,但这不是 Embedded 类的意义
  • 我只是简化了我的例子,所以我可以很容易地传达我的问题,希望这没问题。
  • 我想说this answer 应该告诉你Embedded 类到底是什么以及你为什么使用它们。希望你随后明白,你想做的事情对于Embedded 类是毫无意义的。如果你仍然想这样做,那么你必须改变你的映射

标签: java hibernate jpa spring-data


【解决方案1】:

不,这是不可能的,因为可嵌入对象是 db 中根实体的一部分。它们存储在同一张表中。您可以在选择后手动设置它,或者在代码中使用根实体并通过根实体获取city。如果您想从城市链接到Address,则将City 设置为具有双向关系的实体

UPD

您可以在可嵌入对象中使用@Parent 注释。是hibernate注解

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 2013-01-22
    • 2018-12-31
    相关资源
    最近更新 更多