2016-05-16 5 views
0

私は1から始まるシーケンスとしてIntegerを作成する必要のあるドメインを持っています。そして、それは私が持っている新しいサイトごとに1つずつ始める必要があります。 invoiceNumberは、私が持っているすべての異なるサイトのために、1から開始されます: は、それでは、私は プライマリキーではなく、別のフィールドに関連するシーケンスフィールドをGrailsに作成する方法は?

Invoice{ 
    Site site 
    Integer invoiceNumber 
    //Other attributes 
} 

だから私は何をしたいです請求書

という名前のこのクラスを持っているとしましょう。

私は "サイト1" の5枚の請求書を持っている場合は、invoiceNumbersがあるべき "サイト1"、 "サイト2" と "サイト3":

Site{ 
    String siteName; 
} 

私はサイト名と異なる3つのサイトを持っていると仮定すると: 1,2,3,4,5。 "サイト2"に3つの請求書がある場合、請求書番号は1,2,3 となるはずです。

このシーケンスを表すためにGrailsでこの構造を作成するにはどうすればよいですか?

答えて

0

私はこのコードをチェックしませんでしたが、考え方は単純です:

class Invoice { 
    Site site 
    Integer invoiceNumber 

    def beforeInsert() { 
     if (!invoiceNumber) { // just in case you will pass this number by yourself for some reason 
     def lastInvoice = Invoice.countBySite(site) 
     invoiceNumber = lastInvoice + 1 
     } 
    } 
} 
関連する問題