Hi, I am new to Hibernate. I am getting org.hibernate.MappingException: Unknown entity error during the session.save(obj). I have placed the mapping entries in hbm.xml. It worked fine for one program, but giving an error for the second program.
This is how my program looks:
hibernate.cfg.xml ------------------ <?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.OracleDialect</property> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@udaykiran-pc:1521:xe</property> <property name="hibernate.connection.username">system</property> <property name="hibernate.connection.password">addepalli</property>
<!-- Mapping files --> <mapping resource="contact.hbm.xml"/> <!--mapping resource="../../contact.hbm.xml"/--></session-factory> </hibernate-configuration>
contact.hbm.xml ----------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.sample.hibernate.Book" table="BOOK"> <id name="bookId" type="long" column="ID"><generator class="increment"/></id> <property name="bookName"><column name="BOOKNAME"/></property> </class> </hibernate-mapping>
Book.java ---------- public class Book {
private long bookId; private String bookName;
public String getBookName() { return bookName; }
public void setBookName(String bookName) { this.bookName = bookName; }
public long getBookId() { return bookId; }
public void setBookId(long bookId) { this.bookId = bookId; }
}
IncrSampleHibernate.java -------------------------- public class IdIncrSampleHibernate {
public static void main(String args[]) { Session session = null;
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); session = sessionFactory.openSession(); Transaction tx = session.beginTransaction();
System.out.println("Inserting book obj into database"); Book book = new Book(); book.setBookName("Hibernate Tutorial"); session.save(book); System.out.println("Book obj saved to database");
tx.commit(); session.flush(); session.close(); } }
Exception: ----------
init: deps-module-jar: deps-ear-jar: deps-jar: compile-single: run-main: 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.Environment <clinit> INFO: Hibernate 3.2.5 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.Environment <clinit> INFO: hibernate.properties not found 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.Environment buildBytecodeProvider INFO: Bytecode provider name : cglib 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.Environment <clinit> INFO: using JDK 1.4 java.sql.Timestamp handling 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.Configuration configure INFO: configuring from resource: /hibernate.cfg.xml 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.Configuration getConfigurationInputStream INFO: Configuration resource: /hibernate.cfg.xml 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.Configuration addResource INFO: Reading mappings from resource : contact.hbm.xml 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues INFO: Mapping class: com.sample.hibernate.Contact -> CONTACT 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.Configuration doConfigure INFO: Configured SessionFactory: null 27 Jun, 2010 1:13:38 AM org.hibernate.connection.DriverManagerConnectionProvider configure INFO: Using Hibernate built-in connection pool (not for production use!) 27 Jun, 2010 1:13:38 AM org.hibernate.connection.DriverManagerConnectionProvider configure INFO: Hibernate connection pool size: 20 27 Jun, 2010 1:13:38 AM org.hibernate.connection.DriverManagerConnectionProvider configure INFO: autocommit mode: false 27 Jun, 2010 1:13:38 AM org.hibernate.connection.DriverManagerConnectionProvider configure INFO: using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@udaykiran-pc:1521:xe 27 Jun, 2010 1:13:38 AM org.hibernate.connection.DriverManagerConnectionProvider configure INFO: connection properties: {user=system, password=****} 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: RDBMS: Oracle, version: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: JDBC driver: Oracle JDBC driver, version: 10.1.0.5.0 27 Jun, 2010 1:13:38 AM org.hibernate.dialect.Dialect <init> INFO: Using dialect: org.hibernate.dialect.OracleDialect 27 Jun, 2010 1:13:38 AM org.hibernate.dialect.Oracle9Dialect <init> WARNING: The Oracle9Dialect dialect has been deprecated; use either Oracle9iDialect or Oracle10gDialect instead 27 Jun, 2010 1:13:38 AM org.hibernate.dialect.OracleDialect <init> WARNING: The OracleDialect dialect has been deprecated; use Oracle8iDialect instead 27 Jun, 2010 1:13:38 AM org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory INFO: Using default transaction strategy (direct JDBC transactions) 27 Jun, 2010 1:13:38 AM org.hibernate.transaction.TransactionManagerLookupFactory getTransactionManagerLookup INFO: No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Automatic flush during beforeCompletion(): disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Automatic session close at end of transaction: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: JDBC batch size: 15 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: JDBC batch updates for versioned data: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Scrollable result sets: enabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: JDBC3 getGeneratedKeys(): disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Connection release mode: auto 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Default batch fetch size: 1 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Generate SQL with comments: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Order SQL updates by primary key: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Order SQL inserts for batching: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 27 Jun, 2010 1:13:38 AM org.hibernate.hql.ast.ASTQueryTranslatorFactory <init> INFO: Using ASTQueryTranslatorFactory 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Query language substitutions: {} 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: JPA-QL strict compliance: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Second-level cache: enabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Query cache: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory createCacheProvider INFO: Cache provider: org.hibernate.cache.NoCacheProvider 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Optimize cache for minimal puts: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Structured second-level cache entries: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Statistics: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Deleted entity synthetic identifier rollback: disabled 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Default entity-mode: pojo 27 Jun, 2010 1:13:38 AM org.hibernate.cfg.SettingsFactory buildSettings INFO: Named query checking : enabled 27 Jun, 2010 1:13:38 AM org.hibernate.impl.SessionFactoryImpl <init> INFO: building session factory 27 Jun, 2010 1:13:39 AM org.hibernate.impl.SessionFactoryObjectFactory addInstance INFO: Not binding factory to JNDI, no JNDI name configured Inserting book obj into database Exception in thread "main" org.hibernate.MappingException: Unknown entity: com.sample.hibernate.Book at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550) at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1338) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:98) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519) at com.sample.hibernate.IdIncrSampleHibernate.main(IdIncrSampleHibernate.java:31) Java Result: 1 BUILD SUCCESSFUL (total time: 1 second)
|