当前位置: 首页 > 知识库问答 >
问题:

具有@ManyToMany关系且无导航的JPA查询

万志专
2023-03-14

与本文类似,我有以下(几乎相同)类:

public class Project {
    @ManyToMany 
    private Set<Person> resources;
    // get and set of resources
}
public class Person {
}

区别在于我的属性是私有的(使用bean作为实体)。

问题是:我如何创建一个查询来返回一个确定的人的所有项目(在JPQL和/或使用CriteriaQuery)?

我找到了所有其他类似的问题,但没有一个对我有帮助,因为所有这些问题都依赖于从项目到人员的导航(不存在从人员的查询):

  • JPQL多人选择
  • @许多JPA 2复杂查询
  • JPA 2.0 CriteriaQuery对@ManyToMany关系中的表的查询

我不想仅仅为了能够进行查询而在“Person”中插入属性,因为它在我的模型中没有意义。

谢谢

共有1个答案

方弘
2023-03-14
select project from Project project
join project.resources person
where person.id = :personId

如果您真的需要,我会让您将其转换为条件,但我不认为将条件用于这样一个基本的静态查询有任何好处。

 类似资料:
  • 我有这些实体: 用户 角色 权限 一个用户有很多角色,一个角色有很多权限。 null

  • 我试图存储一个manytomany关系,但它没有存储关系。 下面的代码生成了3个表。 这是我发送到服务器的JSON: {“abbreviatedsequence”:“xdf”,“medals”:[{“name”:“purple”,“id”:1},{“name”:“red”,“id”:2}],“sequence”:“xdfree”,“name”:“savier”} java

  • 当我试图使用ebean缓存系统(带有io.ebean:ebean-redis)读取@ManyTomany关系时,我遇到了一个异常。这是一个springboot应用程序。 我正在使用的版本: SpringBootVersion=2.4.3 MariaDbVersion=2.7.2 EBeanVersion=12.7.2 Flywayversion=7.7.0 BaseModel Java类: 文章J

  • 我不明白是什么问题? 谢谢。

  • 问题内容: 我有一些与关系有关的实体: 和 使用某些模型执行保存模型时,一切正常。表存储这些实体的所有键。但是,使用驱动程序保存模型时,表不会更改。我认为映射存在问题。 问题答案: 那是预期的行为。在双向多对多关联中,一侧必须是反侧。在您的情况下,这是一面,因为它包含: 拥有关系的字段。除非关系是单向的,否则为必需。 这意味着是关联的所有者,并且Hibernate仅在维护关联时检查该侧。

  • 问题内容: 我下面有两个… 我想更新的,有时也用下面的方法有时… 方法#1 方法#2 第一种方法可以正常工作,但第二种则不能。但是,当我将“ 从” 移至“ 第二”方法时,效果很好,而不是第一个。 问题答案: 问题是一个问题。 假设它是的子类,那么您的问题是关系中只有一方是拥有实体。将使得实体所属的实体,因此仅改变该实体被持久化。这意味着,你必须更新在这两种情况下的实体。如果您有一个“ a”的组列表