我可以通过Spring Data Jpa查询以某种方式检索Hibernate代理对象列表吗?
我有来自请求的对象id,我不想检索它们(因为实体中有很多OneToOne关系),但是我想检索它们的代理,它们将包含它们的id(我需要这个用于关系)。我想要像Hibernate findOne()
或getOne()
这样的东西但是为了列表结果。
任何建议将不胜感激,谢谢!
如果我对你的问题说得对,你想做这样的事情:
地理空间存储库查询(不需要@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
正确的解决方案是使用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());
谈到性能,这非常好,因为数据库访问可以一次完成,检索少量数据。