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

使用JPA关系查询时,非法尝试取消引用集合

詹杰
2023-03-14
问题内容

我有2节课:

@Table(name = "PEOPLE")
@Entity
class Person {
  @OneToMany(mappedBy = "owner")
  Set<Car> cars;
}
@Table(name = "CARS")
@Entity
class Car {
  @ManyToOne
  @JoinColumn(name = "OWNER_ID", referencedColumnName = "ID")
  Person owner;
  @Column(name = "MODEL")
  String model;
}

我正在尝试按模型查询人。即使表之间的连接很清楚,运行以下代码也会 失败

select mo from Person mo where mo.cars.model = ?

错误是:

org.hibernate.QueryException: illegal attempt to dereference collection [...] with element property reference [model] [select mo from Person mo where mo.cars.model = ?]

任何想法如何解决该问题?


问题答案:

当实体之间的关系已经定义时,可以使用以下join fetch语法:

select mo from Person mo join fetch mo.cars c where c.model = ?


 类似资料:
  • 问题内容: 我有2节课: 我正在尝试按模型查询人。即使表之间的连接很清楚,运行以下代码也会 失败 : 错误是: 任何想法如何解决该问题? 问题答案: 当实体之间的关系已经定义时,可以使用以下语法:

  • 问题内容: 我正在尝试跟随hql查询执行 但它显示 问题答案: 是一个。因此,它没有名为的属性。 是this 元素 的一个属性。 您可以通过 加入 集合 而不是取消引用 来解决此问题:

  • 我正在开发一个人力资源管理应用程序,所以我对如何通过JPA管理实体感到困惑。 我的情况是一组多语言上下文中的表:-employees-departments-languages-departments_languages 在我的数据库表之后: 从这个查询中,我需要员工信息,以及部门名称(假设languageId为1) 从eclipse JPA控制台执行查询将返回一个Employee对象,该对象具有

  • 我有和。他们有一个不可撤销的关系。 如何查询具有空的所有对象? 因为如果我这样做: JPA引擎在两个表之间进行连接,并放置一个无用的WHERE子句()。恢复时,它会执行一个无用的本机SQL。怎么能 当前解决方案: 阅读OpenJPA文档时,我发现应该使用本机查询来解决JPA的限制。我可以很容易地使用本机查询,我目前正在这样做,但我想避免使用它。

  • 我使用spring数据jpa,我有这些类(每个类都有id…未显示) 所以在hov存储库中,我尝试通过vehiclesId进行搜索 原因:组织。springframework。豆子。工厂BeanCreationException:创建名为“hOVRepository”的bean时出错:调用init方法失败;嵌套异常为java。lang.IllegalArgumentException:未能为方法公共

  • 我正在使用Laravel5.7和MySQL。我有一个表和一个表,其中包含每个城市中可用的服务。可以在1个或多个城市提供1项服务。每个城市属于一个州,每个州属于一个国家。我想返回服务、城市、州和国家,但我不确定如何在每个模型中建立关系。我可以检索城市、州和国家吗? 城市 国家 国家 服务 允许的位置 国家id,名称1,美国 国家 城市 服务 允许的位置 services.php模型 cities.p