【问题标题】:hibernate query involving foreign key涉及外键的休眠查询
【发布时间】:2017-10-26 13:48:11
【问题描述】:

我正在尝试编写一个休眠查询,它根据某些条件从表中选择许多记录。

我的数据库中有两个相关的表

tbleventattendees,其中包含以下字段 - eventAttendeeRecord tbleevent、tblmembers 和 memberComments;

tblevent 有以下字段相关字段 eventID 是 tbleventattendees 中的 tblevent 外键

我要做的是编写一个 HQL 查询,向与会者显示特定活动的与会者,例如像这样的 SQL 查询 select * from tbleventattendees where tblevent = 1

但是,虽然这在 MySQL 工作台中作为 SQL 查询工作,但当我从 Netbeans 中的 tblevent = 1 的 tbleventattendees 尝试运行 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.Tbevent@6a2437ae

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

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    你可以这样写:

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

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多