2017-04-26 10 views
0

안녕하세요 Grails에 새로운 오전과 나는 다음과 같은 시나리오에 Grails의 도메인 클래스를 정의하는 방법에 대한 귀하의 전문가 조언을 추구하고자하는 개체를 정의하는 방법 :Grails의 도메인 관계

  1. 구매자 많은 살 수를 items
  2. 배달에는 많은 항목이 포함될 수 있습니다. 일부 항목은 나중에 배달되기 때문에 구매자가 구매 한 모든 항목이 반드시 필요한 것은 아닙니다.
  3. 배송은 구매자가 구매하지 않은 새 항목을 포함 할 수 없습니다.

    1. 한 구매자가 많은 항목

      에게 많은 배달

      에게 많은 항목을 가질 수 있습니다
    2. 한 전달을 할 수 있습니다

    3. 한 구매자를 가질 수 있습니다 :

    그래서 다음과 그들 사이의 관계입니다

도메인 클래스를 이와 같이 정의했습니다. 그러나 그 결과. 전문가가 내가 잘못한 것을 지적 할 수 있습니까? 정말 고맙습니다!

class Buyer { 

    static constraints = { 
    } 

    String buyerName 
    static hasMany = [purchases : GoodsPurchased]  

} 

class GoodsPurchased { 

    static constraints = { 
     delivery nullable:true 
    } 

    String goodsName 
    static belongsTo = [ buyer: Buyer, delivery : Delivery ] 

} 

class Delivery { 

    static constraints = { 
    } 

    Date deliveryDate 
    static belongsTo = [ buyer : Buyer ] 
    static hasMany = [ purchases : GoodsPurchased ] 

} 

배달에는 구매자가 구매 한 항목이 하나 이상있을 수 있습니다. 모든 품목이 배달에 필요한 것은 아니기 때문입니다. 도메인 클래스에서 이전에 구매자가 구매 한 품목 만 배달에 포함될 수 있다고 정의하는 방법은 무엇입니까? Grails에서 어떻게 제한을가합니까?

+0

무엇이 문제인지 알지 못하지만 –

+0

의 말을하기가 어렵습니다. 왜 여기에 '구매자'에게 속한 '배송'이 있는지 확실하지 않습니다. –

+0

Andy를 찾아 주셔서 대단히 감사합니다. 미안하지만 전에는 분명하지 않았습니다. 구매자가 몇 가지 품목을 구매하면 품목은 시간이 지남에 따라 인도됩니다. 따라서 각 배송에는 이전에 구매자가 구매 한 품목 만 포함될 수 있습니다. 내 문제는 어떻게 내가 그 grails - 아마도 외래 키 또는 뭔가를 통해 그 제한을합니까? – YSL

답변

0

도메인 클래스에서이 작업을 수행하려는 경우 beforeInsert() 및 beforeUpdate()에서 도메인 클래스에서 개체를 삽입하거나 업데이트하기 전에 이러한 비즈니스 규칙을 확인할 수 있습니다.

당신이 여기에 대한 자세한 정보를 얻을 수 있습니다 : 그러나 http://gorm.grails.org/6.0.x/hibernate/manual/

, 이러한 비즈니스 로직이 서비스에 아직 구현하거나, 사용자가 선택할 수 있도록 GSP의 목록을 제한 할 수있는 가장 좋은 장소.

희망이 도움이됩니다.