使用“Spring Data Jpa query”检索“hibernate代理对象”列表

问题描述 投票:-1回答:2

我可以通过Spring Data Jpa查询以某种方式检索Hibernate代理对象列表吗?

我有来自请求的对象id,我不想检索它们(因为实体中有很多OneToOne关系),但是我想检索它们的代理,它们将包含它们的id(我需要这个用于关系)。我想要像Hibernate findOne()getOne()这样的东西但是为了列表结果。

任何建议将不胜感激,谢谢!

java hibernate spring-data-jpa querydsl
2个回答
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


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());

谈到性能,这非常好,因为数据库访问可以一次完成,检索少量数据。

© www.soinside.com 2019 - 2024. All rights reserved.