gpt4 book ai didi

java - 如何在 Hibernate 中创建/调用 sql View

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:22 25 4
gpt4 key购买 nike

这是在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com