我正在尝试编写一个hibernate查询,该查询根据某些条件从表中选择多个记录。
我的数据库中有两个相关的表
tbleventattendees ,其中包含以下字段 - eventAttendeeRecord tblevent,tblmembers和memberComments;
tblevent ,其中包含以下字段相关字段eventID,它是tbleventattendees中的tblevent外键
我要做的是编写一个HQL查询,该查询向与会者展示特定事件的与会者,例如像这样的SQL查询select * from tbleventattendees,其中tblevent = 1
然而,虽然这在MySQL工作台中作为SQL查询工作,当我从tbleventattendees尝试Netbeans中的tblevent = 1运行HQL查询时出现以下错误
org.hibernate.QueryException: Incorrect query syntax [ FROM
Society.Tbleventattendees as attendees where Tblevent =1
]
at org.hibernate.hql.internal.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:259)
at org.hibernate.hql.internal.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:209)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1796)
Caused by: java.lang.NullPointerException
at org.hibernate.sql.QuerySelect.appendTokens(QuerySelect.java:185)
at org.hibernate.sql.QuerySelect.setWhereTokens(QuerySelect.java:103)
at org.hibernate.hql.internal.classic.QueryTranslatorImpl.renderSQL(QueryTranslatorImpl.java:625)
at org.hibernate.hql.internal.classic.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:243)
... 9 more
我认为这是因为我在查询中使用数据库中的值而不是对象引用,因为当我删除= 1条件时,我在该列中得到以下值
Society.Tblevent@6a2437ae
有人可以帮忙吗,我已经在这里阅读了很多帖子,但很难找到答案
答案 0 :(得分:0)
你可以这样写:
Query query = session.createQuery("from Tbleventattendees attendees where attendees.tblevent.eventID = :tbleventId ");
query.setParameter("tbleventId", "1");
List list = query.list();