jpa多表查询及子查询


1. 主表1:1子表  主表查询

1.1 **主表 MasterEntity

    

 
@OneToOne
@JoinColumn(name = "masterext")
MasterExtendEntity masterExtendEntity; //关联表


**子表 MasterExtendEntity

1.2 查询

Root<MasterEntity> root
Path<String> code = root.join("MasterExtendEntity").get("ExtField1")
Iterator iterator =  query.codeList.iterator()
In invalue = cb.in(code);
while (iterator.hasNext()) {
invalue.value(iterator.next())
}
searchList.add(invalue)

 

2. 主表1:1子表  子查询

 

2.1

**子表:MasterExtendEntity

@OneToOne
@JoinColumn(name = "MasterEntityId", nullable = false)
MasterEntity masterEntity

**主表 MasterEntity

 

2.2查询

//子查询
Subquery< MasterExtendEntity> subquery = query.subquery(MasterExtendEntity)
Root< MasterExtendEntity> extEntityRoot = subquery.from(MasterExtendEntity)
subquery.select(extEntityRoot)


Predicate correlatePredicate = cb.equal(extEntityRoot.get("MasterEntity"), root)
subquery.where(
correlatePredicate,
cb.equal(extEntityRoot.get("code"), String), cb.equal(extEntityRoot.get("code"), String)
)
searchList.add(cb.exists(subquery))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM