Hi,
nach unzähligen Änderungen an der Datenbank und meiner Entity-Klassen (Java) habe ich nun die Klassen mit NetBeans generieren lassen. Leider tritt immer noch ein Fehler auf:
Die von Netbeans generierten Klasse:
Und so sieht die Tabelle Frame in h2 aus:

Ich verstehe die Fehlermeldung also nicht. Die Spalte existiert doch?
Die Idee ist, dass ein Video mehrere Frames hat, also eine 1 zu n Beziehung.
Dabei will ich aber gerne eine bidirektionale Verbindung, um schneller von einem Frame auf das dazugehörige Video zu kommen.
Kann mir jemand weiterhelfen?
nach unzähligen Änderungen an der Datenbank und meiner Entity-Klassen (Java) habe ich nun die Klassen mit NetBeans generieren lassen. Leider tritt immer noch ein Fehler auf:
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing column [FK_VIDEO_ID] in table [FRAME]
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateTable(AbstractSchemaValidator.java:136)
at org.hibernate.tool.schema.internal.GroupedSchemaValidatorImpl.validateTables(GroupedSchemaValidatorImpl.java:42)
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.performValidation(AbstractSchemaValidator.java:89)
at org.hibernate.tool.schema.internal.AbstractSchemaValidator.doValidation(AbstractSchemaValidator.java:68)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:191)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:309)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:445)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:889)
... 33 more
Die von Netbeans generierten Klasse:
Code:
@Entity
@Table(name = "FRAME")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Frame.findAll", query = "SELECT f FROM Frame f")})
public class Frame implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "FID")
private Integer fid;
@Column(name = "FRAME_NUMBER")
private Integer frameNumber;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "fkFrameId")
private Collection<Rectangle> rectangleCollection;
@JoinColumn(name = "FK_VIDEO_ID", referencedColumnName = "VID")
@ManyToOne(optional = false)
private Video fkVideoId;
//Constructor, getter & setter
}
Code:
@Entity
@Table(name = "VIDEO")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Video.findAll", query = "SELECT v FROM Video v")})
public class Video implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "VID")
private Integer vid;
@Column(name = "PATH")
private String path;
@Column(name = "FPS")
private Integer fps;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "fkVideoId")
private Collection<Frame> frameCollection;
// ....
}
Und so sieht die Tabelle Frame in h2 aus:

Ich verstehe die Fehlermeldung also nicht. Die Spalte existiert doch?
Die Idee ist, dass ein Video mehrere Frames hat, also eine 1 zu n Beziehung.
Dabei will ich aber gerne eine bidirektionale Verbindung, um schneller von einem Frame auf das dazugehörige Video zu kommen.
Kann mir jemand weiterhelfen?