Problema con Hibernate
sto cercando di risolvere un esercizio assegnatoci all'università...ho realizzato il mapping tra le classi e il database mysql con JPA ed ora sto cercando di controllare se riesco effettivamente a lavorare con questi dati.
La funzione di test del DB è la seguente:
ma ricevo il seguente errore nel momento in cui lancio l'applicazione :
La funzione di test del DB è la seguente:
public static void dst01() {
Configuration config = new Configuration();
config.addAnnotatedClass(Address.class);
config.addAnnotatedClass(Admin.class);
config.addAnnotatedClass(Cluster.class);
config.addAnnotatedClass(Computer.class);
config.addAnnotatedClass(Environment.class);
config.addAnnotatedClass(Execution.class);
config.addAnnotatedClass(Grid.class);
config.addAnnotatedClass(Job.class);
config.addAnnotatedClass(MemberShip.class);
config.addAnnotatedClass(User.class);
config.configure();
new SchemaExport(config).create(true, true);
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
session.beginTransaction();
session.save(new Address("via morandi", "praga", "99303", 1));
List<Cluster> cl = new ArrayList<Cluster>();
Cluster c = new Cluster(1, "first", new Date(2012, 2, 4), new Date(2012, 12, 19));
cl.add(c);
session.save(c);
Cluster c1 = new Cluster(2, "second", new Date(2012, 2, 4), new Date(2012, 2, 9));
cl.add(c1);
session.save(c1);
Cluster c2 = new Cluster(3, "terzo", new Date(2012, 2, 14), new Date(2012, 2, 19));
cl.add(c2);
session.save(c2);
Cluster c3 = new Cluster(4, "quarto", new Date(2012, 2, 14), new Date(2012, 2, 19));
cl.add(c3);
session.save(c3);
Cluster c4 = new Cluster(5, "quinto", new Date(2012, 12, 24), new Date(2012, 21, 23));
cl.add(c4);
session.save(c4);
Address a = new Address("via bruzi", "Vienna", "880292", 1);
session.save(a);
Address a1 = new Address("via lamo", "Vienna", "881292", 2);
session.save(a1);
Address a2 = new Address("via borghera", "Vienna", "881392", 3);
session.save(a2);
Address a3 = new Address("via magagna", "Vienna", "881395", 4);
session.save(a3);
Address a4 = new Address("via luppolo", "Vienna", "882395", 5);
session.save(a4);
Admin ad = new Admin(1, "marco", "rossi", a);
session.save(ad);
Admin ad1 = new Admin(1, "luca", "perfetti", a1);
session.save(ad1);
Admin ad2 = new Admin(1, "elena", "rossi", a2);
session.save(ad2);
Admin ad3 = new Admin(1, "girolamo", "verdi", a3);
session.save(ad3);
Admin ad4 = new Admin(1, "lancillotto", "beckenm", a4);
session.save(ad4);
Computer comp = new Computer(1, "asus", 4, "arabia", new Date(2009, 1, 1), new Date(2012, 03, 29));
session.save(comp);
Computer comp1 = new Computer(2, "asus", 4, "arabia", new Date(2009, 1, 1), new Date(2012, 03, 19));
session.save(comp1);
Computer comp2 = new Computer(3, "asus", 8, "instanbul", new Date(2006, 1, 1), new Date(2012, 02, 29));
session.save(comp2);
Computer comp3 = new Computer(4, "asus", 4, "arabia", new Date(2007, 1, 1), new Date(2012, 01, 19));
session.save(comp3);
Computer comp4 = new Computer(5, "asus", 8, "grecia", new Date(2009, 1, 1), new Date(2012, 03, 29));
session.save(comp4);
Environment e = new Environment(1, "fast");
session.save(e);
Environment e1 = new Environment(2, "slow");
session.save(e1);
Environment e2 = new Environment(3, "medium");
session.save(e2);
Environment e3 = new Environment(4, "fast");
session.save(e3);
Environment e4 = new Environment(5, "fast");
session.save(e4);
Job j = new Job(1, 4, 20, true, e);
session.save(j);
Job j1 = new Job(2, 4, 20, true, e1);
session.save(j1);
Job j2 = new Job(3, 8, 14, false, e2);
session.save(j2);
Job j3 = new Job(4, 4, 20, true, e3);
session.save(j3);
Job j4 = new Job(5, 6, 12, true, e4);
session.save(j4);
Execution ex = new Execution(1, new Date(2012, 2, 2), new Date(2012, 2, 3), JobStatus.FINISHED, j);
session.save(ex);
Execution ex1 = new Execution(2, new Date(2012, 2, 2), new Date(2012, 2, 3), JobStatus.RUNNING, j1);
session.save(ex1);
Execution ex2 = new Execution(3, new Date(2012, 2, 5), new Date(2012, 2, 6), JobStatus.FINISHED, j2);
session.save(ex2);
Execution ex3 = new Execution(4, new Date(2012, 3, 12), new Date(2012, 3, 13), JobStatus.SCHEDULED, j3);
session.save(ex3);
Execution ex4 = new Execution(5, new Date(2012, 3, 23), new Date(2012, 3, 24), JobStatus.FINISHED, j4);
session.save(ex4);
Grid g = new Grid(1, "mariabella", "2-floor", 2.3);
session.save(g);
Grid g1 = new Grid(2, "fedora", "12-floor", 1.3);
session.save(g1);
Grid g2 = new Grid(3, "landscape", "3-stock", 2.13);
session.save(g2);
Grid g3 = new Grid(4, "crisis", "last-floor", 4.34);
session.save(g3);
Grid g4 = new Grid(5, "lendolf", "2-floor", 1.87);
session.save(g4);
byte[] bytesOfMessage;
byte[] thedigest = null;
try {
bytesOfMessage = "nonlaso".getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
thedigest = md.digest(bytesOfMessage);
} catch (UnsupportedEncodingException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
} catch (NoSuchAlgorithmException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
}
User u = new User(1, "marianna", "borghi", a, "labella", thedigest, "20029202", "22030");
session.save(u);
try {
bytesOfMessage = "calamaro".getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
thedigest = md.digest(bytesOfMessage);
} catch (UnsupportedEncodingException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
} catch (NoSuchAlgorithmException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
}
User u1 = new User(2, "leopoldo", "borghi", a, "arturo", thedigest, "222239202", "21232");
session.save(u1);
try {
bytesOfMessage = "miracle".getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
thedigest = md.digest(bytesOfMessage);
} catch (UnsupportedEncodingException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
} catch (NoSuchAlgorithmException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
}
User u2 = new User(3, "ernaldo", "fuffolo", a3, "ernald", thedigest, "20339202", "23430");
session.save(u2);
try {
bytesOfMessage = "nonlaso".getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
thedigest = md.digest(bytesOfMessage);
} catch (UnsupportedEncodingException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
} catch (NoSuchAlgorithmException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
}
User u3 = new User(4, "carletto", "matusen", a2, "erste", thedigest, "20029222", "22030");
session.save(u3);
try {
bytesOfMessage = "nonlaso".getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
thedigest = md.digest(bytesOfMessage);
} catch (UnsupportedEncodingException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
} catch (NoSuchAlgorithmException e5) {
// TODO Auto-generated catch block
e5.printStackTrace();
}
User u4 = new User(5, "ercule", "borghi", a4, "ercule", thedigest, "20479202", "22030");
session.save(u4);
MemberShip m = new MemberShip(1, new Date(2011, 2, 2), 0.5);
session.save(m);
MemberShip m1 = new MemberShip(2, new Date(2011, 3, 2), 0.5);
session.save(m1);
MemberShip m2 = new MemberShip(3, new Date(2001, 3, 12), 0.75);
session.save(m2);
MemberShip m3 = new MemberShip(4, new Date(2009, 5, 17), 0.5);
session.save(m3);
MemberShip m4 = new MemberShip(5, new Date(2011, 11, 2), 0.75);
session.save(m4);
session.getTransaction().commit();
}ma ricevo il seguente errore nel momento in cui lancio l'applicazione :
Exception in thread "main" org.hibernate.MappingException: component property not found: id at org.hibernate.mapping.Component.getProperty(Component.java:292) at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:2455) at org.hibernate.cfg.AnnotationBinder.fillComponent(AnnotationBinder.java:2336) at org.hibernate.cfg.AnnotationBinder.bindComponent(AnnotationBinder.java:2285) at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2021) at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:796) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707) at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3977) at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3931) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1368) at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:972) at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:130) at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:92) at dst1.Main.dst01(Main.java:65) at dst1.Main.main(Main.java:35)
Risposte
Ho dimenticato di incollare anche il codice del file di configurazione:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/dst</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">tastiera</property> <property name="hibernate.connection.pool_size">10</property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.hbm2ddl.auto">update</property> <!-- Mapping files --> <!-- <mapping resource="dst1/Computer.hbm.xml" /> --> </session-factory> </hibernate-configuration>