2016-06-29 8 views
0

セットアップはこれです:私のアプリケーションには起こりうる多くのイベントがあります。イベントは、いくつかの情報が追加されたフィールドとイベントコードです。基本的にイベントは、いくつかの情報が追加された結合テーブル自体です。単方向OneToMany余分な結合テーブルを持たないHibernate

私はApplicationIdとEventIdのテーブルを作成しないでください。ちょうど思える私は

Caused by: org.hibernate.MappingException: Foreign key (FK_157jxjblselu4urv8c0kqee6l:ApplicationEvent [applicationEvents_id])) must have same number of columns as the referenced primary key (ApplicationEvent [Application_id,applicationEvents_id]) 

アプリケーション(多くは削除されますが、問題がある場合、これはある)

@Entity 
@Table 
public class Application { 
    //Lots of other stuff 
    private Set<ApplicationEvent> applicationEvents = new LinkedHashSet<ApplicationEvent>(); 

    @OneToMany 
    @JoinTable(name="ApplicationEvent") 
    public Set<ApplicationEvent> getApplicationEvents() { 
     return applicationEvents; 
    } 

    public void setApplicationEvents(Set<ApplicationEvent> applicationEvents) { 
     this.applicationEvents = applicationEvents; 
    } 
} 

イベント

@Entity 
@Table 
public class ApplicationEvent { 

    private Long id; 
    private Long applicationId; 
    private EventCode eventCode; 
    private Boolean acknowledge; 
    private int sequence; 


    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    @Column 
    public Long getApplicationId() { 
     return applicationId; 
    } 

    public void setApplicationId(Long applicationId) { 
     this.applicationId = applicationId; 
    } 

    @OneToOne 
    @JoinColumn(name="EventCodeId") 
    public EventCode getEventCode() { 
     return eventCode; 
    } 

    public void setEventCode(EventCode eventCode) { 
     this.eventCode = eventCode; 
    } 

    @Column 
    public Boolean getAcknowledge() { 
     return acknowledge; 
    } 

    public void setAcknowledge(Boolean acknowledge) { 
     this.acknowledge = acknowledge; 
    } 

    @Column 
    public int getSequence() { 
     return sequence; 
    } 

    public void setSequence(int sequence) { 
     this.sequence = sequence; 
    } 

//Some overriden methods 
} 

答えて

1

を取得しています

エラーを必要としません。このマッピングは意味をなさない:アプリケーションとアプリケーションの間の結合テーブルとしてApplicationEventテーブルを使用しているonEvent。

ただ、(この列は、すなわち結合列、OneToManyの関連付けを実体1であるので)ApplicationEntityからapplicationIdを削除し、キャッチのための私の部分のおかげでダム間違いだった

@OneToMany 
@JoinColumn(name = "applicationId") 
+0

を使用しています。私はそれ以来、私の問題の声明に反して別のルートを行ってきました。表示されるイベントでアプリケーションが必要です。 – nerdlyist

関連する問題