有没有一种方法可以像Hibernate中的分析函数一样使用sql-server?

就像是

select foo from Foo foo where f.x = max(f.x) over (partition by f.y)

最佳答案

您正在执行本机SQL查询。

如果使用的是JPA,则语法为:

Query q = em.createNativeQuery("select foo.* from Foo foo " +
                               "where f.x = max(f.x) over " +
                               "(partition by f.y)", Foo.class);


如果需要返回多种类型,请查看SQLResultSetMapping批注。

如果您直接使用Hibernate API:

Query q = session.createSQLQuery("select {foo.*} from Foo foo " +
                                 "where f.x = max(f.x) over "+
                                 "(partition by f.y)");
q.addEntity("foo", Foo.class);


有关更多详细信息,请参见Hibernate文档中的10.4.4. Queries in native SQL

在这两个API中,您都可以使用setParameter正常传递参数。

10-07 16:19
查看更多