SpringData JPA多表查询

Posted 路上的风景

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringData JPA多表查询相关的知识,希望对你有一定的参考价值。

对象导航查询:查询一个对象的同时,通过此对象查询他的关联对象

/**
     * 对象导航查询:
     *      默认使用的是延迟加载的形式查询
     *          调用get方法并不会立即发送查询,而是在使用关联对象的时候才会查询
     * 将延迟加载改为立即加载需要修改配置
     *      fetch,需要配置到多表映射关系的注解上
     *      
     *      @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
     *      private Set<LinkMan> linkMans = new HashSet<>(0);
     *
     */
    @Test
    @Transactional // 解决在单元测试中的no session问题(could not initialize proxy - no Session)
    public void testQuery1() {
        // 查询id为1的客户
        Customer c = customerDao.findOne(1L);
        // 对象导航查询此客户下的所有联系人
        Set<LinkMan> linkMans = c.getLinkMans();
        for (LinkMan linkMan : linkMans) {
            System.out.println(linkMan);
        }
    }
/**
     * 从联系人对象导航查询他的所属客户
     *      默认:立即加载
     */
    @Test
    @Transactional
    public void  testQuery2() {
        LinkMan linkMan = linkManDao.findOne(2L);
        //对象导航查询所属的客户
        Customer customer = linkMan.getCustomer();
        System.out.println(customer);
    }

 

以上是关于SpringData JPA多表查询的主要内容,如果未能解决你的问题,请参考以下文章

spring Data jpa 一对多关联 动态查询怎么写

SpringData JPA多表操作(增,删)

springdata_多表关系中的一对一__小案例

springdata-jpa 八种查询方法

SpringData专题-JPA中的复杂查询

SpringData JPA之方法名查询的关键字表