涉及外键的{Hibernate查询

时间:2017-10-26 13:48:12

标签: java hibernate

我正在尝试编写一个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

有人可以帮忙吗,我已经在这里阅读了很多帖子,但很难找到答案

1 个答案:

答案 0 :(得分:0)

你可以这样写:

Query query = session.createQuery("from Tbleventattendees attendees where attendees.tblevent.eventID  = :tbleventId ");
query.setParameter("tbleventId", "1");
List list = query.list();