我收到的错误如下:
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
文件。
有什么想法吗?
答案 0 :(得分:1)
要使用您已创建的实体,请确保使用javax库将其标记为@Entity
。您还需要映射它,以便hibernate知道它应该将它链接到您的数据库表。请验证您的实体是否已映射到applicationContext.xml
(适用于春季应用程序)或persistence.xml
常见的休眠应用程序中。
您可以通过多种方式映射您的实体。最常见的方法是:
hibernate.cfg.xml
: <mapping class="your.packages.to.the.entity.class" />
有关工作示例,请参阅: How configure hibernate.cfg.xml to applicationContext.xml as dataSource?
您提到没有使用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
时直接添加此类。