有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用“Spring数据Jpa查询”检索“hibernate代理对象”列表

我可以用Spring-Data-Jpa查询检索Hibernate代理对象的列表吗

我有来自请求的对象ID,我不想检索它们(因为实体中有许多OneTONE关系),但我想检索它们的代理,其中将包含它们的ID(我需要这个用于关系)。我想要类似于Hibernate findOne()getOne()的东西,但用于列表结果

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


共 (2) 个答案

  1. # 1 楼答案

    正确的解决方案是使用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());
    

    说到性能,这是非常好的,因为数据库访问只需一次,只需检索少量数据

  2. # 2 楼答案

    如果我答对了你的问题,你想做这样的事情:

    地理空间存储库查询(不需要@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