Das Setup ist dies: Meine Anwendung hat viele Ereignisse, die passieren können. Ein Event sind nur ein paar hinzugefügte Felder und ein EventCode mit einigen Informationen. Im Grunde ist Events eine Join-Tabelle mit einigen hinzugefügten Informationen.Unidirektional OneToMany Ruhezustand ohne eine zusätzliche Join-Tabelle
Ich möchte vermeiden, eine Tabelle von ApplicationId und EventId zu erstellen. einfach nicht
Der Fehler benötigt scheinen erhalte ich
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])
Applikation (Eine Menge entfernt, aber das ist, wo das Problem ist)
@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;
}
}
Event
@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
}
dass ein stummen Fehler von mir vielen Dank für den Fang war. Seitdem bin ich einen anderen Weg gegangen, der meiner Problemstellung entgegenging. Anwendung wird für Ereignisse benötigt, die angezeigt werden. – nerdlyist