我正在将一些应用程序逻辑从JDBC迁移到Hibernate。使用JDBC有许多简单的insert,update和select语句,我正在尝试使用HQL来实现此目的。
例如,使用JDBC,以下是查询
select * from tab where property =<given value>
我像这样使用了HQL
session.createQuery(query).setString("property", "some prop value");
当我运行代码时,我不断收到错误
“org.hibernate.hql.internal.ast.QuerySyntaxException:tab是 没有映射“
我是否需要为计划使用hql执行的每个查询声明一个POJO类?
答案 0 :(得分:0)
使用Hibernate:
要在子句FROM中的HQL查询中使用表,必须将表映射为bean
示例1:
String hql = "SELECT e FROM " + MyEntity.class.getName() + " e ";
MyEntity类必须映射一个真实的表来访问你的数据库(你可以使用JPA表示法或XML表示法,我更喜欢第二种)
您不能拥有真正的表,但是将查询结果重定向到未使用bean的costructor映射的bean中。
示例2:
String hql = "SELECT new " + MyNotMappedEntity.class.getName() +
"(e.field1, e.field2)" +
" FROM " + MyEntity.class.getName() + " e ";
在示例2中,您的类MyNotMappedEntity必须具有正确的构造函数,其中包含两个传递相同类型的两个字段的参数。
告诉我没关系,或者你想了解更多信息。