【问题标题】:Writing HQL Query for ManyToOne Association为多对一关联编写 HQL 查询
【发布时间】:2011-02-01 13:20:00
【问题描述】:

嗨, 我有两个具有双向关联的实体。

项目.java

class Project{

    int project_id;

    @OneToMany(mappedBy="project")
    private Set<Users> projectsUsers = new HashSet<Users>();

    //getters and setters and other fields

}

Users.java

class Users{ 

    int id;
    int userId;
    int project_id 

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="project_id") 
    private Project project; 

    //getters and setters and other fields

}

我想编写一个 HQL 查询来检索与特定 userId 关联的项目列表。

我正在写一些这样的东西,但没有用。

from Project P where P.projectsUsers.userId=1

尝试执行此操作时出现异常“非法尝试取消引用集合” 有谁能帮我解决这个问题吗?

提前致谢

问候
帕尼库马尔

【问题讨论】:

  • a) 请不要使用 HTML 和/或 &gt; 引号来格式化您的代码。选择一个代码块并使用带有大括号的图标 b) JPA 查询语言是 JPQL,而不是 HQL。您问题中的标签之一是错误的,是哪一个?
  • 其实我正在Spring-MVC上处理这部分代码。所以我认为我可能会为这个问题找到更好的解决方法。

标签: java hibernate jpa hql


【解决方案1】:

首先,“与特定 userId 关联的项目列表”没有意义,因为您具有一对多/多对一的关系,因此每个用户最多只能关联一个项目。

检索该项目的查询如下:

SELECT u.project FROM users u WHERE u.userId = ?

【讨论】:

  • 我已经解决了这个问题,但无论如何根据我的表,一个用户可以与 n 个项目相关联。在用户表中,userId 和 project_id 的组合是唯一的。
  • 顺便说一句,根据您给出的解决方案我想出了一个解决问题的新方法。非常感谢您
猜你喜欢
  • 2011-04-18
  • 1970-01-01
  • 2012-09-06
  • 2015-03-31
  • 2013-09-19
  • 2014-07-23
  • 2018-01-26
  • 2013-06-08
  • 1970-01-01
相关资源
最近更新 更多