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

使用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 元素 的一个属性。 您可以通过 加入 集合 而不是取消引用 来解决此问题:

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

  • 问题内容: 我有以下四个表: SCHEDULE_REQUEST表: ID,APPLICATION_ID(FK) 应用表: ID,代码 USER_APPLICATION表: APPLICATION_ID(FK),USER_ID(FK) 用户表: ID,NAME 现在,我想创建一个条件条件,以便为指定的用户ID 选择。 我有以下代码: 您能帮我如何将查询过滤器传递给关系对象吗?我认为我在 “ appl

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

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