Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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
Java 用于多任务的QueryDSL代码生成_Java_Hibernate_Jpa_Querydsl - Fatal编程技术网

Java 用于多任务的QueryDSL代码生成

Java 用于多任务的QueryDSL代码生成,java,hibernate,jpa,querydsl,Java,Hibernate,Jpa,Querydsl,我正在将一些复杂的JPQL查询移植到一个大型Hibernate/JPA2应用程序中,以使用QueryDSL 2.3.0,我一直在做一个 我的客户端实体包含 @ManyToMany private List<Group> groups; QueryDSL代码生成在myQClient类中生成了以下代码: public final SimplePath<java.util.List<Group>> groups = createSimple(

我正在将一些复杂的JPQL查询移植到一个大型Hibernate/JPA2应用程序中,以使用QueryDSL 2.3.0,我一直在做一个

我的
客户端
实体包含

@ManyToMany
private List<Group> groups;
QueryDSL代码生成在my
QClient
类中生成了以下代码:

public final SimplePath<java.util.List<Group>> groups = 
          createSimple("groups", java.util.List.class);
public final SimplePath组=
createSimple(“groups”,java.util.List.class);

使用
SimplePath
生成的代码不允许我使用
中的
包含的
方法来查询成员资格。我想我需要一个
CollectionPath
。是否有方法注释
客户机
类,以便QueryDSL使用正确的类型查询集合

我有一个答案。这看起来像

正确的解决方案是不使用Eclipse生成源代码(不要启用注释处理)。相反,我使用的是
m2eclipse
,并在Maven中生成源代码


作为参考,我的第一个解决方法是使用我自己的
QQClient
类扩展生成的
QClient
类,它添加了一个成员:

public final ListPath<Group, QGroup> fixedgroups = 
                  createList("groups", Group.class, QGroup.class);

query
是其中较大的查询。
slr
是由左连接引入外部查询的
qqqclient
的一个实例。)

可能是这个问题:我在尝试QueryDSL时一直在使用Eclipse,计划一旦习惯了这个工具,就转移到Maven。在发现这个可能的bug之后,我将尝试使用Maven来处理构建。我们将在假期后修复这个bug。在Eclipse中使用2.2.4版本的one jar和在Maven中使用更新版本的one jar可能是一种替代的临时修复方法。谢谢-我在问题的前一天才开始使用QueryDSL,所以bug不是我的第一个想法。切换到QueryDSL极大地提高了查询代码的可读性
public final ListPath<Group, QGroup> fixedgroups = 
                  createList("groups", Group.class, QGroup.class);
QGroup g = QGroup.group;
JPQLSubQuery subquery = new JPQLSubQuery().from(g);
subquery = subquery.where(slr.fixedgroups.contains(g), 
    g.description.upper().like("%" + group.toUpperCase() + "%"));
query = query.where(subquery.exists());