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