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>