使用Hibernate调用存储过程

时间:2015-03-29 10:09:58

标签: java hibernate postgresql jpa

我想用hibernate从PostgreSQL调用存储过程。但是,如果我通过entitymanager.getResultList调用此过程,它将返回一个具有奇怪属性名称的对象列表。 过程:

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;

用户的属性:

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

通话:

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

结果:

result

1 个答案:

答案 0 :(得分:0)

你有什么期望?
您的SP从ResultSet查询返回SELECT,有10条记录 SQL本身只返回值,不是字段名称......

更多 - 为什么您是否创建了一个返回ResultSet的SQL函数?