java - 如何从子元素 JPA 加入

标签 java hibernate jpa

我想通过 JPA 查询/criteriaQuery 选择元素,但不太清楚该怎么做。

我使用 H2 作为数据库。我在 H2 控制台中测试的查询是:

SELECT element.* 
FROM element LEFT JOIN group_element ON element.id  = group_element.elements_id
WHERE group_id IS NULL

换句话说,我想选择无组元素。

类(class)有:

@Entity
class Element{
    @Id
    @GeneratedValue
    private Integer id;
}

@Entity
class Group{
    @Id
    @GeneratedValue
    private Integer id;

    @ManyToMany
    private List<Element> elements;
}

在“元素”由 Element 中的字段映射的类似情况下,我执行此操作没有问题,但在这种特定情况下,我无法添加该字段。我不太清楚在这种情况下如何加入实体。

最佳答案

JQL 连接是从所有者到被拥有的。要获得无组元素,您可以这样做

SELECT e FROM Element e WHERE e NOT IN (SELECT e2 FROM Group g INNER JOIN g.elements e2)

关于java - 如何从子元素 JPA 加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32695138/

相关文章:

java - 在多个项目中使用相同的 hibernate 映射文件

java - 我的 clojure 代码是否被 AOT 编译?

java - JPA 删除时级联抽象/继承类

java - j2me : how to show My Location in google map?

java - 使用 Lucene 搜索带有空格的术语

java - hql-query 到双向关联中的子实体

java.lang.NoSuchMethodException : org. hibernate.validator.ClassValidator 缝 weblogic 10.3

java - 如何将数据库表中的空字段映射为 double ?

集群环境下的Spring JPA事务

java - 与 @DateTimeFormat 注解一起使用时 Hibernate 返回 0 条记录