Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version: 3.2.1 GA with JDK 1.6
Name and version of the database you are using: Oracle9iR2
When I use @IdClass for composite primary key, I get the following error.
Do I misunderstand how to use @IdClass?
Or is this a known issue?
Any help would be appreciated.
Thanks in advance,
ebi
Code:
javax.persistence.PersistenceException: org.hibernate.HibernateException: Missing column: id1 in TEST.TEST
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:720)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at mypackage.TestDriver.main(TestDriver.java:14)
Caused by: org.hibernate.HibernateException: Missing column: id1 in TEST.TEST
at org.hibernate.mapping.Table.validateColumns(Table.java:254)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1080)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:116)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:317)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1291)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:713)
... 4 more
org.hibernate.HibernateException: Missing column: id1 in TEST.TEST
at org.hibernate.mapping.Table.validateColumns(Table.java:254)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1080)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:116)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:317)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1291)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:713)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:121)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at mypackage.TestDriver.main(TestDriver.java:14)
Code:
// DDL
CREATE TABLE TEST (
ID_1 INTEGER NOT NULL,
ID_2 INTEGER NOT NULL,
CONSTRAINT TEST_PK PRIMARY KEY (ID_1, ID_2)
);
// Test.java
@Entity
@IdClass(TestPK.class)
public class Test implements Serializable {
private Integer id1;
private Integer id2;
@Id
@Column(name="ID_1", nullable = false)
public Integer getId1() {
return id1;
}
public void setId1(Integer id1) {
this.id1 = id1;
}
@Id
@Column(name="ID_2", nullable = false)
public Integer getId2() {
return id2;
}
public void setId2(Integer id2) {
this.id2 = id2;
}
}
// TestPK.java
public class TestPK implements Serializable {
private Integer id1;
private Integer id2;
public Integer getId1() {
return id1;
}
public void setId1(Integer id1) {
this.id1 = id1;
}
public Integer getId2() {
return id2;
}
public void setId2(Integer id2) {
this.id2 = id2;
}
}
// Begin test
EntityManagerFactory emf = Persistence.createEntityManagerFactory("test");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Test test = new Test();
test.setId1(1);
test.setId2(1);
em.persist(test);
em.getTransaction().commit();
em.close();
emf.close();