gpt4 book ai didi

java - 我通过 "for"中的 getSingleResult 调用 Sql 存储过程,但每行的结果都相同

转载 作者:行者123 更新时间:2023-12-01 17:37:17 26 4
gpt4 key购买 nike

我在 Controller 中有这段代码

@PostMapping(value="/Servicios/fetch-data/info-adicional", produces= {"application/json"})
public dto_encabezado getAddInfoItem(@RequestBody dto_encabezado encabezado)
{
encabezado.setValid(true);
PA_ITEMS_INFO_ENTITY info;
for(dto_detalle item: encabezado.getDetalle()) {
info = new PA_ITEMS_INFO_ENTITY();

try {
info = FetchData.getAddInfoItem(item.getProducto(),
item.getProveedor() == null ? "" : item.getProveedor(),
encabezado.isServicioArticulo() ? "S" : "I");

item.setDescripcion(info.getDescription());//Nombre

}catch(Exception e) {
item.setComentario(e.getMessage());
encabezado.setValid(false);
}
}
return encabezado;
}

我实现这样的存储过程:

@Override
@Transactional
public PA_ITEMS_INFO_ENTITY getAddInfoItem(String itemCode, String cardCode, String docType) {
StoredProcedureQuery sp = entityManager.createNamedStoredProcedureQuery("getAddInfoItem");
sp.setParameter("ItemCode", itemCode);
sp.setParameter("CardCode", cardCode);
sp.setParameter("DocType", docType);
PA_ITEMS_INFO_ENTITY obj = new PA_ITEMS_INFO_ENTITY();
obj = (PA_ITEMS_INFO_ENTITY)sp.getSingleResult();
System.out.println(itemCode); //Print given parameter
System.out.println(obj.getCode());//Code property is the same value of paramenter but was get as result into StoredProcedure
return obj;
}

存储过程类中的属性

@Column(name = "ItemCode")
public String code;

没有错误,但是在控制台打印这个,似乎结果代码在存储过程中重复,但参数不同。为什么?

  • FL1341101-L//参数
  • FL1341101-L//结果(正常)
  • FL1341102-L//参数
  • FL1341101-L//结果(错误,之前的结果)
  • FL1320221-L//参数
  • FL1341101-L//结果(错误,之前的结果)
  • FL1331002-L//参数
  • FL1331002-L//结果(正常)
  • FL1341101-L//参数
  • FL1331002-L//结果(糟糕的结果)....
  • FL1341102-L
  • FL1331002-L
  • FL1320221-L
  • FL1331002-L

如果我删除@Transaction注释,所有行的结果都会重复..

最佳答案

解决方案:在调用 getSingleResult() 方法之前关闭 session (如果有 Activity )...

Session session = entityManager.unwrap(Session.class);
if(session != null) {
session.clear();
}

希望你觉得它有用

关于java - 我通过 "for"中的 getSingleResult 调用 Sql 存储过程,但每行的结果都相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61016397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com