JPQL查询错误-休眠多对多关系

时间:2019-08-09 10:09:22

标签: java hibernate jpql

我要打印所有的“ Cuentas?”客户名称为“ Paco”的客户: 我有这个实体:

public class Cuenta implements Serializable{

    private static final long serialVersionUID = 1L;    

    @ManyToMany(mappedBy = "cuentasC",fetch = FetchType.LAZY)
    private Set<Cliente> clientesC = new HashSet<Cliente>();
}

@Entity(name = "CLIENTE")
public class Cliente implements Serializable{

    @Column(name = "Nombre", length = 30, nullable = false)
    private String Nombre_C;

    @ManyToMany(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
    private Set<Cuenta> cuentasC = new HashSet<Cuenta>();
}

并且我有此查询得到此错误:

String q = "select c FROM CUENTA c, IN (cuentas.clientesC) cli "+"WHERE CLIENTE cli.Nombre = 'Paco' ";
Query query = em.createQuery(q);
List<Cuenta> resultado = query.getResultList();
System.out.println(resultado.toString());

显示此错误我无法找到原因是错误的:

unexpected token: cli near line 1, column 76 [select c FROM entidades.Cuenta c, IN (cuentas.clientesC) cli WHERE CLIENTE cli.Nombre = 'Paco' ]
unexpected token: cli near line 1, column 76 [select c FROM entidades.Cuenta c, IN (cuentas.clientesC) cli WHERE CLIENTE cli.Nombre = 'Paco' ]

可能是语法错误?关系的方向可能有问题吗?

1 个答案:

答案 0 :(得分:0)

已解决并升级: 选择所有Saldo大于10且“ CLIENTE.name” ='Paco'的“ CUENTA”

String q = "select c FROM CUENTA c, IN (c.clientesC) clientesC "
                    +"WHERE clientesC.Nombre_C = 'Paco' AND c.Saldo > 10";