I have @OneToMany
之间的关系FabricRoll
and FabricDefect
.
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "fabric_roll_id", referencedColumnName = "fabric_roll_id")
private Set<FabricDefect> fabricDefects = new HashSet<>();
问题是当我得到FabricRoll
by JpaRepository
功能
找到所有()
同事FabricDefect
也已加载。
我只想加载FabricRoll
and FabricDefect
应该在调用函数时加载getFabricDefect()
Fabric Roll ServiceImpl 类
@Component
public class FabricRollServiceImpl implements IFabricRollService{
@Autowired
FabricRollRepository fabricRollRepository;
@Transactional(propagation = Propagation.REQUIRED)
@Override
public List<FabricRoll> getAllFabricRoll() {
FabricRoll fabricRoll1 = new FabricRoll();
fabricRoll1.setBatchNo("34344");
fabricRoll1.setLotNo("425");
fabricRoll1.setPoNo("42");
fabricRoll1.setRollLength(2343);
fabricRoll1.setRollNo("356");
fabricRoll1.setRollWidth(60);
fabricRoll1.setStyleNo("354");
FabricDefect fabricDefect = new FabricDefect();
fabricDefect.setDefectNote("note");
fabricDefect.setDefectPoint(3);
fabricDefect.setSegment(3);
fabricDefect.setYard(42);
Set<FabricDefect> fabricDefects = new HashSet<>();
fabricDefects.add(fabricDefect);
fabricRoll1.setFabricDefects(fabricDefects);
addFabricRoll(fabricRoll1);
FabricRoll fabricRoll = null;
return fabricRollRepository.findAll();
}
@Override
public void addFabricRoll(FabricRoll fabricRoll) {
fabricRollRepository.save(fabricRoll);
}
}
Break point:
Console:
看来是一个调试神器。
在调试时,由于事务仍处于打开状态,因此将在断点评估时加载监视的延迟加载实体属性。
要检查“生产”行为,您应该插入em.detach
在断点之前声明或使用日志记录(按照 Manza 的建议)并检查em.getEntityManagerFactory().getPersistenceUnitUtil().isLoaded(fabricRoll1.fabricDefects())
对分离的实体返回 false。
(记住注入 EntityManager 例如通过声明@PersistenceContext private EntityManager em;
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)