Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带IN子句的JPA标准生成器_Jpa_Criteriaquery - Fatal编程技术网

带IN子句的JPA标准生成器

带IN子句的JPA标准生成器,jpa,criteriaquery,Jpa,Criteriaquery,I具有“CollectionTable”报表的实体报表用户: @实体 课堂报告{ @纵队 私有短用户标识 @列(name=“reportUserId”) @ElementCollection(fetch=FetchType.EAGER) @CollectionTable(name=“ReportUser”,joinColumns={@JoinColumn(name=“reportId”,referencedColumnName=“reportId”)}) private Set reportUs

I具有“CollectionTable”报表的实体报表用户:

@实体 课堂报告{

@纵队 私有短用户标识

@列(name=“reportUserId”) @ElementCollection(fetch=FetchType.EAGER) @CollectionTable(name=“ReportUser”,joinColumns={@JoinColumn(name=“reportId”,referencedColumnName=“reportId”)}) private Set reportUsers=new HashSet()

}

我需要使用CriterIQuery编写以下SQL(基本上,我需要所有由用户1111创建的报告或用户ID 1111位于该集合表中的报告):

在r.reportId=ru.reportId上选择*from Report r join ReportUser ru,其中r.userId=1111或ru.reportUserId=1111

你知道怎么做吗

谢谢你,并致以最良好的问候
Dalibor

好的,我找到了一个解决方案:

CriteriaBuilder cb = persistence.getCriteriaBuilder();
CriteriaQuery<Report> query = cb.createQuery(Report.class);
Root<Report> root = query.from(Report.class);

Predicate userCreated = cb.equal(root.get(Report_.rowInfo).get(RowInfo_.userCreated), getUserId());
Predicate reportUser = cb.isMember(getUserId(), root.get(Report_.reportUsers));
query.where(cb.or(userCreated, reportUser));

return persistence.getCriteriaResults(query);
CriteriaBuilder cb=persistence.getCriteriaBuilder();
CriteriaQuery=cb.createQuery(Report.class);
Root=query.from(Report.class);
谓词userCreated=cb.equal(root.get(Report_u.rowInfo).get(rowInfo_u.userCreated),getUserId());
谓词reportUser=cb.isMember(getUserId(),root.get(Report.reportUsers));
其中(cb.or(userCreated,reportUser));
返回persistence.getCriteriaResults(查询);