2016-11-07 66 views
0

我迷惑從2表中檢索數據其中belong to其他表。如何獲取數據與findAllBy與連接表條件

這樣的.. 這是域TransaksiKas.groovy

class TransaksiKas { 
    String trxNo 
    Date trxDate 
    String ctrlNo 
    Kas kas 
    Cif cif 
    String deleteFlag = "N" 

    static constraints = { 

    } 
} 

,這是TransaksiKasDetail.groovy

class TransaksiKasDetail { 
TransaksiKas transaksiKas 
Account account 
Invoice salesInvoice 
PurchaseInvoice purchaseInvoice 
BigDecimal amount 
String dt //D atau K 
String keterangan 

String cekNo 
String cekNoAvailable 
Date cekDueDate 
Bank bank 

static constraints = { 
    amount(nullable: false, blank: true, min: new BigDecimal('0.0'), max: new BigDecimal('99999999999999999.99'), scale: 2) 
    account(nullable: true,blank:true) 
    purchaseInvoice(nullable: true,blank: true) 
    salesInvoice(nullable: true,blank: true) 
    dt(nullable: true,blank: true) 
    keterangan(nullable: true,blank: true) 
    cekNo(nullable: true,blank: true) 
    cekDueDate(nullable: true,blank:true) 
    bank(nullable: true,blank:true) 
    cekNoAvailable(nullable: true,blank:true) 
} 

}

在我的情況

,我試圖從TransaksiKasDetail哪裏得到的所有數據TransaksiKasDetail.transaksiKascif = 1

我想這樣的..

def cekList = TransaksiKasDetail.findAllByAndCekNoAvailableAndTransaksiKas("N",trx)

在這種情況下, 我需要從TransaksiKasDetail哪裏有transaksiKascif = 2cekDuedate = today

回答

1

例如,您可以使用findAll

def example = TransaksiKasDetail.findAll(
      "from TransaksiKasDetail as u where u.cekNoAvailable = :cek and cekNo != null and cekDueDate = :skrg and transaksiKas.cif = :cif" , [cif:cif,cek:'N',skrg:new Date().clearTime()]) 

使用findAll,您可以在TransaksiKas

for more information, you can read this

創造條件
1

與標準儘量讓所有的數據:

Date today = new Date().clearTime() 
def results = TransaksiKasDetail.createCriteria().list { 
    transaksiKas { 
     cif { 
      eq("id",2) // or whatever cif == 2 means 
     } 
    } 
    between("cekDueDate", today, today + 1) 
}