Java Hibernate查询与联接:QuerySyntaxException:意外标记
我想使用join进行查询,我对其进行了测试,但出现了此错误 org.hibernate.hql.ast.QuerySyntaxException:意外令牌 我做到了:Java Hibernate查询与联接:QuerySyntaxException:意外标记,java,database,hibernate,join,orm,Java,Database,Hibernate,Join,Orm,我想使用join进行查询,我对其进行了测试,但出现了此错误 org.hibernate.hql.ast.QuerySyntaxException:意外令牌 我做到了: public List <Card>getCard(Client c) { ClientDAO cd = new ClientDAO(); List<Card> ca = getSessionFactory().getCurrentSession().createQuery(
public List <Card>getCard(Client c) {
ClientDAO cd = new ClientDAO();
List<Card> ca = getSessionFactory().getCurrentSession().createQuery("select ca.column1,e.column2 from card ca join ens e on ca.ide=e.ide where ca.idclient="+ cd.getClient(c).getIdclient()).list();//this is a method to get the current client
return ca;
公共列表获取卡(客户端c){
ClientDAO cd=newclientdao();
List ca=getSessionFactory().getCurrentSession().createQuery(“从卡ca中选择ca.column1,e.column2在ca.ide=e.ide上连接e.ide,其中ca.idclient=“+cd.getClient(c.getIdclient()))。List();//这是获取当前客户端的方法
返回ca;
您使用了SQL语法来编写HQL查询。如果卡
实体具有ens
关联,您可以编写如下查询:
List<Card> ca = getSessionFactory().getCurrentSession()
.createQuery(
"select ca " +
"from Card ca " +
"join fetch ca.ens " +
"where ca.idclient = :idclient")
.setParameter("idclient", cd.getClient(c).getIdclient())
.list();
return ca;
}
List ca=getSessionFactory().getCurrentSession()
.createQuery(
“选择ca”+
“来自卡ca”+
“加入获取ca.ens”+
“其中ca.idclient=:idclient”)
.setParameter(“idclient”,cd.getClient(c.getIdclient())
.list();
返回ca;
}
如果您想要SQL查询,因为您有一个投影,您可以编写一个本机查询:
List<Object[]> ca = getSessionFactory().getCurrentSession()
.createSQLQuery(
"select ca.column1, e.column2 " +
"from card ca " +
"join ens e on ca.ide=e.ide " +
"where ca.idclient = :idclient")
.setParameter("idclient", cd.getClient(c).getIdclient())
.list();
List ca=getSessionFactory().getCurrentSession()
.createSQLQuery(
选择ca.column1,e.column2+
“来自卡ca”+
“在ca.ide=e.ide上连接e”+
“其中ca.idclient=:idclient”)
.setParameter(“idclient”,cd.getClient(c.getIdclient())
.list();
在这种情况下,您将得到
对象[]
的列表。每个对象[]
都与选定的行相关联,每个数组元素都是一个列值。您知道此错误的原因吗:线程“main”org.hibernate.MappingException中的异常:JDBC类型没有方言映射:-1如何使用HQL编写此错误我已经为您提供了一个HQL查询。对于缺少的方言,你肯定会找到另一个答案。