easy-query
easy-query copied to clipboard
【请求支持】请求 one2one 支持带中间表的 nav
现状 a().b().c() b是个没什么意义的中间表, 但是目前的数据结构又改不了
请求支持 oneToOne 能像 ManyToMany 一样 用上中间表
最终达成 a().c()
使用上和 ManyToMany 保持一致 只是类型变成 oneToOne
2.5.18 已经实现 在原有的XTonOne的属性基础上使用directMapping来直接映射属性路径即可
@Data
@Table("direct1")
@EntityProxy
public class Direct1 implements ProxyEntityAvailable<Direct1 , Direct1Proxy> {
@Column(primaryKey = true)
private String c1;
private String c2;
private String c3;
private String c4;
private String c5;
@Navigate(value = RelationTypeEnum.OneToOne, selfProperty = {Direct1Proxy.Fields.c1}, targetProperty = {Direct2Proxy.Fields.c7})
private Direct2 direct2;
@Navigate(value = RelationTypeEnum.ManyToOne,directMapping = {"direct2","direct3","direct4"})
private Direct4 direct4;
@Navigate(value = RelationTypeEnum.ManyToOne,directMapping = {"direct2","direct3","direct4","direct5"})
private Direct5 direct5;
}
@Data
@Table("direct2")
@EntityProxy
public class Direct2 implements ProxyEntityAvailable<Direct2, Direct2Proxy> {
@Column(primaryKey = true)
private String c6;
private String c7;
private String c8;
private String c9;
private String c10;
@Navigate(value = RelationTypeEnum.ManyToOne,
selfProperty = {Direct2Proxy.Fields.c8, Direct2Proxy.Fields.c9},
targetProperty = {Direct3Proxy.Fields.c13, Direct3Proxy.Fields.c14})
private Direct3 direct3;
}
@Data
@Table("direct3")
@EntityProxy
public class Direct3 implements ProxyEntityAvailable<Direct3, Direct3Proxy> {
@Column(primaryKey = true)
private String c11;
private String c12;
private String c13;
private String c14;
private String c15;
@Navigate(value = RelationTypeEnum.ManyToOne, selfProperty = {Direct3Proxy.Fields.c15}, targetProperty = {Direct4Proxy.Fields.c20})
private Direct4 direct4;
}
@Data
@Table("direct4")
@EntityProxy
public class Direct4 implements ProxyEntityAvailable<Direct4, Direct4Proxy> {
@Column(primaryKey = true)
private String c16;
private String c17;
private String c18;
private String c19;
private String c20;
@Navigate(value = RelationTypeEnum.OneToOne, selfProperty = {Direct4Proxy.Fields.c16, Direct4Proxy.Fields.c18}, targetProperty = {Direct5Proxy.Fields.c22, Direct5Proxy.Fields.c21})
private Direct5 direct5;
}
@Data
@Table("direct5")
@EntityProxy
public class Direct5 implements ProxyEntityAvailable<Direct5, Direct5Proxy> {
@Column(primaryKey = true)
private String c21;
private String c22;
private String c23;
private String c24;
private String c25;
}
List<Direct1> list = easyEntityQuery.queryable(Direct1.class)
.include(d -> d.direct4())
.toList();
List<Direct1> list = easyEntityQuery.queryable(Direct1.class)
.where(d -> {
d.direct4().c16().eq("123");
d.direct5().c21().eq("1234");
})
.toList();
SELECT
t.`c1`,
t.`c2`,
t.`c3`,
t.`c4`,
t.`c5`
FROM
`direct1` t
LEFT JOIN
`direct2` t1
ON t1.`c7` = t.`c1`
LEFT JOIN
`direct3` t2
ON (
t2.`c13` = t1.`c8`
AND t2.`c14` = t1.`c9`
)
LEFT JOIN
`direct4` t3
ON t3.`c20` = t2.`c15`
LEFT JOIN
`direct5` t4
ON (
t4.`c22` = t3.`c16`
AND t4.`c21` = t3.`c18`
)
WHERE
t3.`c16` = '123'
AND t4.`c21` = '1234'
希望添加OneToOne或ManyToOne使用mappingClass的版本,提供两种选择