Hallo,
Ich benutze SEAM 2.0.1 in JBoss 4.2.2 mit EJB3 und PostgreSQL 8.2.6. Hibernate ist in Version 3.2.1 im Spiel. Aus dem SEAM-Forum wurde ich hierher verwiesen.
Ich habe ein Entity-Bean mit einem Feld physicalDiskId mittels der Column-Annotation auf eine Spalte physicalvolume_id abgebildet. Hier ein Auszug aus dem Quelltext:
Code:
@Entity
@IdClass(ExtentPK.class)
@Table(name="extent")
public class Extent implements java.io.Serializable {
private static final long serialVersionUID = 1L;
// <editor-fold defaultstate="collapsed" desc="EJB CMP Fields.">
@Id
@Column(name = "id", nullable = false)
private Long id;
@Id
@Column(name = "physicalvolume_id", nullable = false)
private Long physicalDiskId;
@Column(name="virtualposition")
private Long virtualPosition;
@Column(name="physicalposition")
private Long physicalPosition;
@Column(name="status")
private Long status;
@Column(name="virtualvolume_id")
private Long virtualVolumeId;
[...]
Beim versuch die Anwendung im JBoss zu starten erhalte ich folgenden Fehler:
Code:
15:37:13,075 WARN [ServiceController] Problem starting service persistence.units:ear=mda2008.ear,jar=mda2008.jar,unitName=mda2008
javax.persistence.PersistenceException: org.hibernate.HibernateException: Missing column: physicalDiskId in public.extent
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:720)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:127)
Hibernate scheint also meine Angabe über den Namen der Spalte zu ignorieren. Was habe ich falsch gemacht?
Die Tabelle extent sieht wie folgt aus:
Code:
CREATE TABLE extent (
id bigint,
physicalvolume_id bigint,
virtualposition bigint,
physicalposition bigint,
status bigint,
virtualvolume_id bigint,
PRIMARY KEY (id, physicalvolume_id)
);
danke im Vorfeld,
Sascha