是否可以在Hibernate中使用分析函数?

ncg*_*cgz 14 sql hibernate

有没有办法在Hibernate中使用像sql-server一样的分析函数?

就像是

select foo from Foo foo where f.x = max(f.x) over (partition by f.y)
Run Code Online (Sandbox Code Playgroud)

Jas*_*red 7

您是在本机SQL查询之后.

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

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

如果需要返回多个类型,请查看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);
Run Code Online (Sandbox Code Playgroud)

10.4.4.有关详细信息,请参阅Hibernate文档中的本机SQL查询.

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

  • 谢谢,但这是否可以在Hibernate中直接进行? (2认同)