我可以通过 Spring Data Jpa查询以某种方式检索休眠代理对象的列表吗?
我从请求中获得了对象ID,并且我不想检索它们(因为实体中存在许多OneToOne关系),但是我想检索将包含其ID的代理(我需要这个用于关联)。我想要类似Hibernate findOne()
或getOne()
的东西,但要得到列表结果。
任何建议将不胜感激,谢谢!
答案 0 :(得分:0)
如果我对您的问题正确无误,您想执行以下操作:
地理空间存储库查询(不需要@Query注释)
public interface PersonRepository extends JpaRepository<Person, String>
List<Person> findByLocationNear(String location, Integer distance);
List<Person> findByCity(String city);
}
但是,您也可以在存储库中使用JQL查询方法
@Query("SELECT p FROM Person t WHERE p.name =?1 AND p.location=?2 ")
List<Person> findPersonByLocation(String fName, String location);
此外,您可以使用HQL
答案 1 :(得分:0)
正确的解决方案是使用EntityManager
实例。
entityManager.getReference(YourClass.class, id);
由于此方法仅接受一个ID,因此您需要编写一个自定义SQL
查询(使用HQL
或本机SQL
)以仅检索 ID 所需的对象。
拥有List<T> ids
,您可以
final List<YourClass> proxyValues =
ids.stream()
.map(id -> entityManager.getReference(YourClass.class, id))
.collect(Collectors.toList());
说到性能,这非常好,因为数据库访问将一次完成,只检索少量数据。