Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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/5/sql/78.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 Hibernate支持UNION ALL吗?_Java_Sql_Database_Hibernate_Hql - Fatal编程技术网

Java Hibernate支持UNION ALL吗?

Java Hibernate支持UNION ALL吗?,java,sql,database,hibernate,hql,Java,Sql,Database,Hibernate,Hql,我是一个部分UI开发人员,现在我需要转入Hibernate开发。今天,当我尝试使用UNION ALL时,HQL出现了一个问题,以下是HQL: SELECT COUNT(DISTINCT users.userId) AS totalSize FROM (SELECT DISTINCT d1.sponsor.id AS userId FROM Dating d1 WHERE d1.invitee.id = ? UNION ALL SELECT DISTINCT d2.invitee.id AS

我是一个部分UI开发人员,现在我需要转入Hibernate开发。今天,当我尝试使用UNION ALL时,HQL出现了一个问题,以下是HQL:

SELECT COUNT(DISTINCT users.userId) AS totalSize FROM (SELECT DISTINCT 
d1.sponsor.id AS userId FROM Dating d1 WHERE d1.invitee.id = ? UNION ALL 
SELECT DISTINCT d2.invitee.id AS userId FROM Dating d2 WHERE d2.sponsor.id = ?) 
AS users 
它显示如下错误:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 55
然后我尝试将此HQL转换为原始SQL:

SELECT COUNT(DISTINCT users.userId) AS totalSize FROM (SELECT DISTINCT 
d1.sponsorId AS userId FROM mmy_dating d1 WHERE d1.inviteeId = 6 UNION 
ALL SELECT DISTINCT d2.inviteeId AS userId FROM mmy_dating d2 WHERE 
d2.sponsorId = 6) AS users;
它通常会显示正确的结果,所以我在想,如果Hibernate不支持UNIONALL语法


提前感谢。

仍有此功能的请求。另请看一下想与大家分享的内容,在我的案例中,我发现了一种绕过这种情况的情况。 这里唯一的规则是使用相同的类型,在本例中,对应于返回列表的字符串可以添加任意多的表:

public List<String> findByCPForCNPJ(String query){
    TypedQuery<String> ccpf = manager.createQuery("select cpf from PessoaFisica where cpf like :pCpf", String.class);
    ccpf.setParameter("pCpf", "%" + query + "%");
    List<String> lista1 = ccpf.getResultList();

    TypedQuery<String> ccnpj = manager.createQuery("select cnpj from PessoaJuridica where cnpj like :pCnpj", String.class);
    ccnpj.setParameter("pCnpj", "%" + query + "%");

    lista1.addAll(ccnpj.getResultList());
    return lista1;
}
公共列表findByCPForCNPJ(字符串查询){
TypedQuery ccpf=manager.createQuery(“从PessoaFisica中选择cpf,其中cpf类似于:pCpf”,String.class);
ccpf.setParameter(“pCpf”、“%”+query+“%”);
List lista1=ccpf.getResultList();
TypedQuery ccnpj=manager.createQuery(“从PessoaJuridica中选择cnpj,其中cnpj类似于:pCnpj”,String.class);
ccnpj.setParameter(“pCnpj”、“%”+query+“%”);
addAll(ccnpj.getResultList());
返回列表1;
}

我希望我贡献了一点,祝大家好运…

我使用纯SQL而不是HQL来实现它。@BradyChu如果您使用纯SQL,那么您可以使用本机SQL而不是HQL。