有没有一种方法可以像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正常传递参数。