这是在 document.hbm.xml
中创建的 View
<database-object>
<create><![CDATA[CREATE VIEW docView
AS
SELECT * from document;
GO]]></create>
<drop>DROP VIEW docView</drop>
<dialect-scope name='org.hibernate.dialect.SQLServerDialect' />
</database-object>
现在如何在我的方法中调用这个 View
试过这样调用
Session session = sessFactory.openSession();
Query query = session.createSQLQuery("docView");
List<?> list = query.list();
结束了
Caused by: java.sql.SQLException: The request for procedure 'docView' failed because 'docView' is a view object.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
在 hibernate 中调用 sql View 有什么想法或其他方法吗?
简而言之,有没有办法调用 view
just like a stored procedure?? ,而不创建新实体??
最佳答案
您可以像使用常规实体表一样使用数据库 View 。定义一个实体类,使用 @Entity 注释或等效的 XML 和 View 列的任意子集作为字段。
重要的一点是您不应更改实体中的值,因为 View 是只读的。
编辑:我不知道像存储过程一样使用 View 的方法。如果您的存储过程的目的是查询评论中暗示的多个实体,您可以:
- 使 View 足够“广泛”以包含所需实体的所有必要属性
- 使用 View 中的外键列和映射到 View 的实体的常规
@*To*
注释与相关实体相关。
恐怕这不会让您走得太远,因为您仍然必须使用 native SQL 或定义一个实体。
关于java - 如何在 Hibernate 中创建/调用 sql View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255016/