org.hibernate.hql.ast.QuerySyntaxException表未映射

时间:2017-03-07 22:06:04

标签: java hibernate hibernate-mapping

我收到的错误如下:

java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: DirectAddress is not mapped [select d from DirectAddress d where emailaddress=?]

其中查询类似于

Query query = session.createQuery("select d from DirectAddress d where emailaddress=?");

我为javax设置了一个实体

@Entity @Table(name = "user")

然后我厌倦了这个问题:

Query query = session.createQuery("select d from " + DirectAddress.class.getName() + " d where emailaddress=?");

没有任何运气。

此外,项目未使用hibernate.cfg.xml文件。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

要使用您已创建的实体,请确保使用javax库将其标记为@Entity 。您还需要映射它,以便hibernate知道它应该将它链接到您的数据库表。请验证您的实体是否已映射到applicationContext.xml(适用于春季应用程序)或persistence.xml常见的休眠应用程序中。

映射您的实体

  

您可以通过多种方式映射您的实体。最常见的方法是:

直接在hibernate.cfg.xml

中映射

<mapping class="your.packages.to.the.entity.class" />

在spring applicationContext.xml的hibernate配置

中进行设置

有关工作示例,请参阅: How configure hibernate.cfg.xml to applicationContext.xml as dataSource?

通过Spring Injection

您提到没有使用hibernate.cfg.xml。您是否通过spring(在非Web应用程序中)注入hibernate的设置?如果是,请参阅Can we configure Hibernate Without hibernate.cfg.xml

如果没有适用的解决方案,请提供有关您的系统的更多详细信息(网络,桌面,以编程方式设置休眠等),我将使用最合适的解决方案编辑此答案。

干杯!

答案 1 :(得分:0)

DirectAddress is not mapped [select d from DirectAddress d where emailaddress=?]

表示hibernate没有找到DirectAddress类的映射。 检查persistence.xml文件以查找实体映射,或者在初始化/加载Configuration时直接添加此类。