我在我的项目中使用 Spring boot 1.5.22、Spring data 和 Hibernate 5.2.18。当我使用 Dao 保存实体对象时:
platDao.save(plat);
数据库中正在执行 BEFORE INSERT 类型的触发器,该触发器正在数据库字段中插入多个文档。当我在数据库工具中使用 SQL 从数据库中的表中进行选择时,我可以看到该字段中的值。但是当我使用 hibernate 和 findOne 方法获取此记录时,我在此字段中看到 null:
Platnosc plat = platDao.findOne(platId);
我也尝试过这个:
Platnosc plat = platDao.findById(platId);
但结果是一样的,触发器设置的字段为空。
我的服务代码:
public List<Platnosc> createDocumentForInvoice(Integer fakturaId) {
AuthUser user = loginMgr.getLoggedUser();
Platnosc plat = Platnosc.builder()
// I don't set field platnoscNr here it is null
.build();
platDao.save(plat);
return plat;
}
我的控制器的代码:
public Response createDocumentForInvoice(
@RequestParam(value = "fakturaId", required = true) Integer fakturaId) {
List<Platnosc> platList = platMgr.createDocumentForInvoice(fakturaId);
// after this I can see in database value of field platnoscNr which was inserted by trigger
String platNr = platList.stream()
.map(p -> {
Platnosc plat = platDao.findById(p.getPlatnoscId());
return String.format("%s nr %s",
platMgr.getRodzajTextForPlatnoscRodzaj(plat.getPlatnoscRodzaj()),
plat.getPlatnoscNr());
})
.collect(Collectors.joining(", "));
return Response.ok(platList.size() == 0
? "No document was created"
: "Created documents: " + platNr)
.build();
}
回应是:
“已创建的文档:信用卡编号为空,转账编号为空,其他付款编号为空”
互换的青春
慕侠2389804
相关分类