I am new to Hibernate. When creating a small application using it, I got the following exception:
Exception in thread "main" java.lang.IllegalArgumentException: Unknown object:
model.Students at org.hibernate.ejb.AbstractEntityManagerImpl.persist (AbstractEntityManagerImpl.java:223) on the .Main.main controller (Main.java:50)
Can anyone help me out?
Entity classes are as follows:
Other details: NetBeans Version: 6.7.1 Hibernate : 3.2.5
Entity students
package model; import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToOne; @Entity public class Students implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; @OneToOne(cascade=CascadeType.ALL) private Address address; public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } }
Another entity class
package model; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity public class Address implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String city; private String zip; public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getZip() { return zip; } public void setZip(String zip) { this.zip = zip; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } }
DAO File
package controller; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import model.Address; import model.Students; import org.hibernate.HibernateException; public class Main { public static void main(String arr[]) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("OneToOne2PU"); EntityManager em = emf.createEntityManager(); EntityTransaction tr= em.getTransaction(); try{ tr.begin(); Address add1 = new Address(); add1.setCity("pune"); add1.setZip("09"); Address add2 = new Address(); add2.setCity("mumbai"); add2.setZip("12"); Students s1 = new Students(); s1.setName("abc"); s1.setAddress(add1); Students s2 = new Students(); s2.setName("xyz"); s2.setAddress(add2); em.persist(s1); em.persist(s2); tr.commit(); emf.close(); } catch(HibernateException e){ e.printStackTrace(); } } }
Persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="OneToOnePU" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>students</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="hibernate.hbm2ddl.auto" value="create-tables"/> <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/> <property name="hibernate.connection.username" value="app"/> <property name="hibernate.connection.password" value="app"/> <property name="hibernate.connection.url" value="jdbc:derby://localhost:1527/StudentsData"/> </properties> </persistence-unit> </persistence>
Hibernate.cfg.xml file
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property> <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property> <property name="hibernate.connection.url">jdbc:derby://localhost:1527/sample</property> <property name="hibernate.connection.username">app</property> <property name="hibernate.connection.password">app</property> <mapping class="model.Students"/> <mapping class="model.Address"/> </session-factory> </hibernate-configuration>
source share