让我们假设,我的数据库中有两个表,并且我必须使用这两个表编写一个连接查询。在我的MVC项目中,我将其中一个表映射为实体类,但没有将另一个表映射为实体。那么,当我运行hql时,这个连接会起作用吗?
如果没有,如果有必要有一个映射,我应该指定这些实体之间的约束(主键/外键)吗?
我的应用程序只是从表中读取数据,因此我不想浪费太多时间编写实体类。使用hibernate有什么简单的方法吗?
发布于 2013-08-05 02:50:29
Hibernate只知道会话工厂中有什么。如果您没有定义某个实体,那么Hibernate永远不会知道is,所以编写涉及该实体hql是不成问题的。
或者,您可以从会话中获取连接,然后执行自定义sql而不是hql。
要使用纯sql,您可以使用以下内容:
getSession().doWork(新作品(){
@Override
public void execute(Connection connection) throws SQLException {
// TODO Auto-generated method stub
}
})
发布于 2013-08-05 02:50:57
关于您的问题: HQL只适用于映射的实体,但可以使用ResultTranformer返回未映射的对象,但不是您的情况。您可以使用hql所需的关系和属性来创建不需要的实体的最小定义。
另一种解决方法是创建纯SQL查询,并只返回带有session.createSQLQuery(yourQuerySQL).addEntity(YourMappedEntity.class).
的映射实体
https://stackoverflow.com/questions/18046037
复制相似问题