使用Spring Jpa从两个或多个表中获取选定的列

时间:2018-09-13 11:42:18

标签: spring hibernate rest spring-boot spring-data-jpa

@Entity
public class A{
 //some properties
}


 @Entity
 public class B{
  //Some properties
 }

我想使用JPA从两个表中获取选定的列,我知道如何通过存储库和控制器来获取单个Entity表数据。

存储库:

public interface extends JPARepository<A, Long>{
    List<A> findAll();}

控制器:

public class class_name{
@AutoWired
private JPARepository repo;
 @RequestMapping("/data")
public List<A> getData(){
return repo.findAll();
}
}

以上代码是获取单个表数据。现在,我想从两个表中获取选定的列。

Note: A, B Entities have mappings

1 个答案:

答案 0 :(得分:3)

您可以做的是在存储库中的一种方法上使用@Query批注,并执行以下操作:

public Name {
    String firstName;
    String telephone;

    public Name(String firstName,String telephon) {
        //initialize fields
    }
}

@Query(select new dummy.Name(u.name,c.telephone) from User u join fetch u.contact c where u.externalId= ?1 )
public Name getName(String externalId){}

您可以轻松返回List而不是使用构造函数查询,但是我发现这种方式更简洁。