zhangzhenhuajack / spring-data-jpa-guide

spring-data-jpa-guide,Spring Data JPA实战,SpringDataJpa详解
http://www.jackzhang.cn/spring-data-jpa-guide/
363 stars 157 forks source link

spring boot jpa 同表子级查询求助 #30

Open SunshineMan opened 3 years ago

SunshineMan commented 3 years ago

我的查询涉及的三个关键表分别是: Garden 园区表:--》House 房源表:--》Entrust寄租寄售委托表:,由于本地的地址复杂性,我们汕头这边比如一个金涛庄,下面有金涛庄东区、金涛庄西区、然后东西区下面还有华明花园、嵩苑、信苑。这些我都放在同一个Garden表里,需求是当用户输入“金涛”字串查询时,可以将涉及到有金涛两字以及下级花园小区的房源给查出来。

三大表具体如下:

Garden 园区表: @Entity public class Garden {

@Id private long id; private String name; private long fatherId;//父级ID private long level; private String relationPath;//后来追加了一个类似“/父级ID/自己ID/" 的路径。

@OneToMany() @JoinColumn(name = "fatherId") private List children = new ArrayList<>();

@OneToMany() @JoinColumn(name = "garden") private List houseList = new ArrayList<>();

House 房源表: @Entity public class House {

@Id private long id; private long gardenId; private long houseType1Id; private long room; private double area; <其它省略> @JsonManagedReference @OneToMany(mappedBy="house") private List entrustList;

@ManyToOne @JoinColumn(name = "gardenId",insertable=false, updatable=false) @JsonBackReference private Garden garden;

Entrust寄租寄售委托表: @Entity public class Entrust {

@Id private long id; private long houseId; private double totalPrice; private long isSale;

@ManyToOne @JoinColumn(name = "houseId",insertable = false,updatable = false) @JsonBackReference private House house;

zhangzhenhuajack commented 3 years ago

image 类似这样 jqpl做关联查询,返回dto即可

zhangzhenhuajack commented 3 years ago

参考:https://github.com/zhangzhenhuajack/spring-data-jpa-guide/blob/master/2.3/jpa_jquery_annotation/src/main/java/com/example/jpa/example1/UserDtoRepository.java

zhangzhenhuajack commented 3 years ago

更详细的原理讲解见:https://kaiwu.lagou.com/course/courseInfo.htm?courseId=490&sid=20-h5Url-0&buyFrom=2&pageId=1pz4#/detail/pc?id=4721