- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这就是我调用 sql server 存储过程的方式
public Response<List<CollectionItem>> getCollectionList(int customerId) {
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("Sp_Tab_GetCollectionInvoice");
query.registerStoredProcedureParameter("CustomeriD", int.class, ParameterMode.IN);
query.registerStoredProcedureParameter("Ccode", int.class, ParameterMode.IN);
query.setParameter("CustomeriD", customerId);
query.setParameter("Ccode", 1);
List<CollectionItem> resultList = query.unwrap(Query.class)
.setResultTransformer(Transformers.aliasToBean(CollectionItem.class)).getResultList();
return new ResponseUtil().createResponse(resultList);
}
这是pojo类
public class CollectionItem {
public long ID;
public String TransType;
public long Invno;
public String TDate;
public double Amount;
public CollectionItem(long ID, String TransType, long Invno, String TDate, double Amount) {
this.ID = ID;
this.TransType = TransType;
this.Invno = Invno;
this.TDate = TDate;
this.Amount = Amount;
}
}
但它并没有转换结果,而是给出了对象数组的列表
如何正确地将对象数组映射到 pojo 类?
我应该通过运行循环手动将对象数组转换为 pojo 吗?
最佳答案
我不是这个问题的专家,但是,EntityManager.createStoredProdecureQuery
有第二个参数用于指定返回类型。当您像下面这样更改调用时会发生什么(还要注释您设置 ResultTransformer 的行)?:
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("Sp_Tab_GetCollectionInvoice", CollectionItem.class);
如果上述解决方案不起作用,我怀疑从存储过程返回的列与所需的 POJO 类成员不匹配。您可以使用 <sql-result-set-mapping>
编写映射或相应的注释将结果集映射到类成员。据我所知,Hibernate 的查询接口(interface)还具有以编程方式处理此映射的方法。您可能想检查addRoot()
和addProperty()
方法。
注意:我刚刚注意到您的 CollectionItem
类未用 @Entity
注释。我不确定上述解决方案在这种情况下是否有效。如果您不想添加@Entity
并使用结果转换器,我认为你的 CollectionItem
类需要一个不带参数的构造函数。为了使 bean 转换器正常工作,Hibernate 要求该类要么没有构造函数,要么有公共(public)无参构造函数。
关于java - 如何使用带有结果集转换器的 Hibernate 存储过程查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571157/
我是一名优秀的程序员,十分优秀!