简体   繁体   English

用Hibernate调用存储过程

[英]Call stored procedure with Hibernate

I want to call stored procedure from PostgreSQL with hibernate. 我想用hibernate从PostgreSQL调用存储过程。 But, if i call this procedure throught entitymanager.getResultList, it's return me a list of objects with strange names of attributes. 但是,如果我通过entitymanager.getResultList调用此过程,则会返回给我一个带有奇怪属性名称的对象的列表。 Procedure: 程序:

CREATE OR REPLACE FUNCTION public.show_top10()
  RETURNS SETOF users
AS
$BODY$
  SELECT * FROM users
    ORDER BY message_count DESC
    LIMIT 10;
$BODY$
LANGUAGE sql VOLATILE;

User's atributes: 用户的属性:

private Integer id;
private String login;
private String password;
private Timestamp dateCreated;
private Long messageCount;
private Integer role;
private Collection<Message> messagesById;

Calling: 致电:

List<Users> result = null;
            StoredProcedureQuery storedProcedureQuery= entityManager.createStoredProcedureQuery("show_top10");
            storedProcedureQuery.execute();
            result = storedProcedureQuery.getResultList();
            entityManager.getTransaction().commit();

And result: 结果:

结果

What did you expect? 您期望什么?
Your SP is returning ResultSet from SELECT query, 10 records. 您的SP从SELECT查询返回ResultSet ,有10条记录。
SQL by itself only returns values, not field names... SQL本身仅返回值, 而不返回字段名...

Further more - why do you create a SQL function that returns a ResultSet ? 更进一步- 为什么您要创建一个返回ResultSet的SQL函数?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM