这是由于JPA指定
EntityManager.getReference(…)的工作方式。它应该返回一个代理,该代理将解析第一次访问属性时要返回的对象,或者最终抛出所包含的异常。
解决此问题的最简单方法是改为使用
findOne(…),例如this
Optional.ofNullable(repository.findOne(…))。如果找不到结果,
findOne(…)将返回
null。
解决此问题的一种更高级的方法是使存储库
Optional直接返回实例。这可以通过使用-
methods的
Optional<T>返回类型创建一个自定义的基本存储库接口来实现
find…。
interface baseRepository<T, ID extends Serializable> extends Repository<T, ID> { Optional<T> findOne(ID id); // declare additional methods if needed}interface YourRepository extends baseRepository<DomainClass, Long> { … }在Spring Data示例库中找到一个完整的示例。



