【问题标题】:Error with Hibernate JPA requestHibernate JPA 请求出错
【发布时间】:2017-08-12 00:21:59
【问题描述】:

我该怎么做:

从类别 c 中选择 c.categoriesThemes,其中 c.url = :url AND c.categoriesThemes.id != 5

这是有问题的:c.categoriesThemes.id != 5

提前谢谢你

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:
    SELECT c.categoriesThemes FROM Categorie c WHERE c.url = :url AND c.categoriesThemes.id <> 5
    

    【讨论】:

    • 否决票接受 非常感谢,但我有这个错误:org.hibernate.QueryException: 非法尝试取消引用集合 [categorie0_.id.categoriesThemes] 与元素属性引用 [id] [SELECT c.categoriesThemes FROM com.warez.iodos.model.Categorie c WHERE c.url = :url AND c.categoriesThemes.id 5]
    • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    【解决方案2】:

    假设您想要的项目类型是CategoryTheme,类别的属性名称是category,您需要这样的查询

    SELECT ct FROM CategoryTheme ct WHERE ct.category.url = :url AND ct.id <> 5
    

    基本上,您是在尝试从错误的表中进行选择。

    【讨论】:

    • 不是双向的...我在 categoriesThemes 中没有分类
    • 那么你将不得不使用原生查询,因为 JPQL 受限于你的关系。
    【解决方案3】:

    所以,我已经创建了一个双向网络,现在,这个请求没问题

    SELECT ct FROM CategorieTheme ct JOIN ct.categorie c WHERE c.url = :url AND ct.id <> 5
    

    但不是这个:

    SELECT c.categoriesThemes FROM Categorie c JOIN c.categoriesThemes ct WHERE c.url = :url AND ct.id <> 5
    

    为什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2019-07-22
      • 2023-03-15
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多