2011-10-23 3 views
2

GORM/Grails - joinTable 표현식에 추가 열 추가

class NewsStory { 
    String headline 
    static hasMany = [channels:Channel] 
    static mapping = { 
     table 'NewsStory' 
     addresses joinTable:[name:'Article_Channel', key:'ArticleId', column:'ChannelId'] 
    } 
} 

있는 Article_Channel 테이블에 비슷한 도메인 클래스 설치가 있습니다. ArticleType이라는 채워진 추가 열이 있어야합니다. 이 값은 항상 동일합니다. 이 도메인 클래스의 '뉴스'는 다른 도메인과 다를 수 있습니다. '블로그' 채널은 '보안'등과 같은 것입니다.

방법이 있습니까? 감사

답변

2

하나의 옵션은 자신의 many-to-many 매핑 클래스를 만들고 거기에 필드를 추가하는 것입니다. 그래서 예를 들면

http://grails.org/Many-to-Many+Mapping+without+Hibernate+XML

:
class ArticleChannel { 
    NewsStory newsStory 
    Channel channel 
    String articleType 
} 

는 그런 다음 NewsStoryChannel 클래스는 ArticleChannel 클래스를 hasMany 것이다.

+0

감사합니다. 항목이 만들어지기 전에 articlechannel 항목을 만들려면 기사를 필요로하는 닭고기 달걀 주변 상황을 어떻게 처리합니까? 즉 기사 채널에는 아직 항목을 사용할 수 없습니까? – AdiFatLady

+0

ID 및 articleType의 NewsStory에서 합성 키를 지정할 수 있다고 생각했으나 조회 테이블에 해당 키를 전파하지 못했습니다. – AdiFatLady

+0

아티클이 작성되기 전에 ArticleChannel 링크를 유지하려면 article 속성을 nullable로 설정할 수 있습니다. 참된. ArticleChannel 객체 ID를 기억하여 나중에 기사 객체로 채우기 위해 코드를 프로그래밍하면됩니다. 1-m 관계를 맺은 합성 ID에 관해서는 가능하다고 생각하지 않습니다. 그렇다면 확실하지 않습니다. – schmolly159