选择实体中包含的列表的子集

塞德

假设我要获取MyEntityID小于10的所有行。此实体包含一个Another实体列表我希望仅通过的子集来获取此列表listAnother此子集仅包含Another其中user包含的特定子集

基本上在SQL中将是这样的:

SELECT * FROM myentity m
LEFT JOIN another a
ON m.idTable=a.my_entity
AND a.user = "test1"
WHERE m.idTable < 10;

但是,我没有设法将此查询转换为jpql。

我的实体是这样的:

@Entity
public class MyEntity implements Serializable {    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int idTable;

    @OneToMany(mappedBy = "myEntity")
    private List<Another> listAnother;

}

@Entity
public class Another implements Serializable {    
    @Id
    private int idAnother;

    // bi-directional many-to-one association to Thethread
    @ManyToOne(fetch = FetchType.LAZY)
    private MyEntity myEntity;

    @ManyToOne(fetch = FetchType.LAZY)
    private User user;
}

@Entity
public class User implements Serializable {

    @Id
    private String username;
}

在jpa中,我可以这样做:

SELECT m FROM MyEntity where m.idTable < 10;

然后,对于我从此列表中获得的每个实体,请调用此命令:

SELECT a FROM Another Where a.user.username=:'test' AND a.myEntity=:entity;

但是,我想一次完成所有查询。我可以使用标准吗?我没有花时间去学习它,但是如果有可能的话,我会的。

OndroMih

JPQL和Critaria API在您可以使用它们表达的方面是相等的。使用Criteria可以实现JPQL,反之亦然。

使用JPQL,您可以通过以下方式将两个查询简单地合并为一个:

SELECT a FROM Another a Where a.user.username=:test AND a.myEntity.idTable < 10

您可以使用点符号(。)来连接查询中的多个实体,前提是该关系是X对1的。如果您具有X对多关系,则需要使用JPQL JOIN,这不是很复杂。(LEFT)JOIN的示例:

SELECT m FROM MyEntity m LEFT JOIN m.listAnother a Where a.user.username=:test AND m.idTable < 10

结果当然是不相等的-在第一种情况下,您将获得另一个实体的列表,并且可以通过a.myEntity获得MyEntity,在第二种情况下,您将获得MyEntity的列表,这些列表都具有至少一个具有给定用户的另一个实体

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从LINQ中包含的实体中进行选择,并获得类似于SQL Join的平面列表?

实体框架列表包含在lambda中

组中的子集(如果列包含元素列表)

子集嵌套列表以仅包含向量中命名的元素

从python中的函数列表中选择函数的子集

在作为子集的集合列表中查找集合并选择它们

根据熊猫中的列表选择数据框行的子集

在包含包含数据框的列表的大列表中自动子集数据

在“ JPA查询”中的ManyToMany关系中,选择给定集合(参数)是“父”子集的确切子集的父实体。

从列表列表中选择列表的子集

不能在实体查询中包含嵌套列表的对象

通过R中的names()位置从列表列表中选择列表的子集

删除列表中的子集

从列表中删除子集

FormType中的实体选择列表未发送值

在pandas dframe中选择行,其中给定的输入列表是dframe列中列表的子集

快速检查子集是否包含给定子集列表的方法

如何获得列表的非包含子集?

包含特定列名的数据框的子集列表

获取包含项目子集的所有列表

在R中以14的步长从矩阵中选择子集并将其保存在列表中

通过其子集选择列表的元素

如何从数字列表中选择文件中包含数字的行

从列表中选择不包含linq中的特定项目

Sitecore该字段包含不在选择列表中的值

选择可以包含2列中的值的数据列表

使用grep选择列表中包含的字符串

选择行,使特定列包含列表中的值

通过单元格中包含的列表成员选择行