Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version:
hibernate-3.2
Mapping documents:
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 name="SessionFactory">
<!-- Database connection settings -->
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<mapping resource="events/Event.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Event.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="events.Event" table="EVENTS">
<id name="id" column="EVENT_ID">
<generator class="native"/>
</id>
<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title"/>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
EventManager
package events;
import org.hibernate.Session;
import java.util.Date;
import util.HibernateUtil;
public class EventManager {
public static void main(String[] args) {
EventManager mgr = new EventManager();
if (args[0].equals("store")) {
mgr.createAndStoreEvent("My Event", new Date());
}
HibernateUtil.getSessionFactory().close();
}
private void createAndStoreEvent(String title, Date theDate) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Event theEvent = new Event();
theEvent.setTitle(title);
theEvent.setDate(theDate);
session.save(theEvent);
session.getTransaction().commit();
}
}
HibernateUtil
package util;
import org.hibernate.*;
import org.hibernate.cfg.*;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Full stack trace of any exception that occurs:
Buildfile: build.xml
clean:
[delete] Deleting directory C:\Documents and Settings\ofbarraganpu\Escritorio
\PruebaHibernate\bin
[mkdir] Created dir: C:\Documents and Settings\ofbarraganpu\Escritorio\Prueb
aHibernate\bin
copy-resources:
[copy] Copying 14 files to C:\Documents and Settings\ofbarraganpu\Escritori
o\PruebaHibernate\bin
compile:
[javac] Compiling 3 source files to C:\Documents and Settings\ofbarraganpu\E
scritorio\PruebaHibernate\bin
run:
[java] 15:46:11,437 INFO Environment:499 - Hibernate 3.2 cr2
[java] 15:46:11,437 INFO Environment:532 - hibernate.properties not found
[java] 15:46:11,452 INFO Environment:666 - Bytecode provider name : cglib
[java] 15:46:11,468 INFO Environment:583 - using JDK 1.4 java.sql.Timestam
p handling
[java] 15:46:11,576 INFO Configuration:1345 - configuring from resource: /
hibernate.cfg.xml
[java] 15:46:11,576 INFO Configuration:1322 - Configuration resource: /hib
ernate.cfg.xml
[java] 15:46:11,994 INFO Configuration:502 - Reading mappings from resourc
e: events/Event.hbm.xml
[java] 15:46:12,226 INFO HbmBinder:298 - Mapping class: events.Event -> EV
ENTS
[java] 15:46:12,273 INFO Configuration:1460 - Configured SessionFactory: S
essionFactory
[java] 15:46:12,427 INFO DriverManagerConnectionProvider:41 - Using Hibern
ate built-in connection pool (not for production use!)
[java] 15:46:12,427 INFO DriverManagerConnectionProvider:42 - Hibernate co
nnection pool size: 1
[java] 15:46:12,427 INFO DriverManagerConnectionProvider:45 - autocommit m
ode: false
[java] 15:46:12,443 INFO DriverManagerConnectionProvider:80 - using driver
: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:hsql://localhost
[java] 15:46:12,443 INFO DriverManagerConnectionProvider:86 - connection p
roperties: {user=sa, password=****}
[java] 15:46:13,711 INFO SettingsFactory:78 - RDBMS: HSQL Database Engine,
version: 1.6
[java] 15:46:13,711 INFO SettingsFactory:79 - JDBC driver: HSQL Database E
ngine Driver, version: 1.6
[java] 15:46:13,758 INFO Dialect:128 - Using dialect: org.hibernate.dialec
t.HSQLDialect
[java] 15:46:13,835 INFO TransactionFactoryFactory:31 - Using default tran
saction strategy (direct JDBC transactions)
[java] 15:46:13,851 INFO TransactionManagerLookupFactory:33 - No Transacti
onManagerLookup configured (in JTA environment, use of read-write or transaction
al second-level cache is not recommended)
[java] 15:46:13,851 INFO SettingsFactory:126 - Automatic flush during befo
reCompletion(): disabled
[java] 15:46:13,851 INFO SettingsFactory:130 - Automatic session close at
end of transaction: disabled
[java] 15:46:13,866 INFO SettingsFactory:145 - Scrollable result sets: dis
abled
[java] 15:46:13,866 INFO SettingsFactory:153 - JDBC3 getGeneratedKeys(): d
isabled
[java] 15:46:13,866 INFO SettingsFactory:161 - Connection release mode: au
to
[java] 15:46:13,866 INFO SettingsFactory:188 - Default batch fetch size: 1
[java] 15:46:13,866 INFO SettingsFactory:192 - Generate SQL with comments:
disabled
[java] 15:46:13,866 INFO SettingsFactory:196 - Order SQL updates by primar
y key: disabled
[java] 15:46:13,866 INFO SettingsFactory:357 - Query translator: org.hiber
nate.hql.ast.ASTQueryTranslatorFactory
[java] 15:46:13,882 INFO ASTQueryTranslatorFactory:24 - Using ASTQueryTran
slatorFactory
[java] 15:46:13,882 INFO SettingsFactory:204 - Query language substitution
s: {}
[java] 15:46:13,897 INFO SettingsFactory:210 - Second-level cache: enabled
[java] 15:46:13,897 INFO SettingsFactory:214 - Query cache: disabled
[java] 15:46:13,897 INFO SettingsFactory:344 - Cache provider: org.hiberna
te.cache.NoCacheProvider
[java] 15:46:13,944 INFO SettingsFactory:229 - Optimize cache for minimal
puts: disabled
[java] 15:46:13,959 INFO SettingsFactory:238 - Structured second-level cac
he entries: disabled
[java] 15:46:13,975 INFO SettingsFactory:258 - Echoing all SQL to stdout
[java] 15:46:13,975 INFO SettingsFactory:265 - Statistics: disabled
[java] 15:46:13,975 INFO SettingsFactory:269 - Deleted entity synthetic id
entifier rollback: disabled
[java] 15:46:13,975 INFO SettingsFactory:284 - Default entity-mode: pojo
[java] 15:46:14,098 INFO SessionFactoryImpl:159 - building session factory
[java] 15:46:14,609 INFO SessionFactoryObjectFactory:86 - Factory name: Se
ssionFactory
[java] 15:46:14,609 INFO NamingHelper:26 - JNDI InitialContext properties:
{}
[java] 15:46:14,640 WARN SessionFactoryObjectFactory:98 - Could not bind f
actory to JNDI
[java] javax.naming.NoInitialContextException: Need to specify class name i
n environment or system property, or as an applet parameter, or in an applicatio
n resource file: java.naming.factory.initial
[java] at javax.naming.spi.NamingManager.getInitialContext(NamingManage
r.java:645)
[java] at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.
java:247)
[java] at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialCon
text.java:284)
[java] at javax.naming.InitialContext.getNameParser(InitialContext.java
:439)
[java] at org.hibernate.util.NamingHelper.bind(NamingHelper.java:52)
[java] at org.hibernate.impl.SessionFactoryObjectFactory.addInstance(Se
ssionFactoryObjectFactory.java:90)
[java] at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryIm
pl.java:303)
[java] at org.hibernate.cfg.Configuration.buildSessionFactory(Configura
tion.java:1213)
[java] at util.HibernateUtil.<clinit>(Unknown Source)
[java] at events.EventManager.createAndStoreEvent(Unknown Source)
[java] at events.EventManager.main(Unknown Source)
[java] 15:46:14,671 INFO SchemaExport:152 - Running hbm2ddl schema export
[java] 15:46:14,671 DEBUG SchemaExport:168 - import file not found: /import
.sql
[java] 15:46:14,686 INFO SchemaExport:177 - exporting generated schema to
database
[java] 15:46:15,429 DEBUG SchemaExport:301 - drop table EVENTS if exists
[java] 15:46:15,475 DEBUG SchemaExport:286 - Unsuccessful: drop table EVENT
S if exists
[java] 15:46:15,475 DEBUG SchemaExport:287 - Table not found: EVENTS in sta
tement [drop table EVENTS if exists]
[java] 15:46:15,475 DEBUG SchemaExport:301 - create table EVENTS (EVENT_ID
bigint generated by default as identity (start with 1), EVENT_DATE timestamp, ti
tle varchar(255), primary key (EVENT_ID))
[java] 15:46:15,522 ERROR SchemaExport:272 - Unsuccessful: create table EVE
NTS (EVENT_ID bigint generated by default as identity (start with 1), EVENT_DATE
timestamp, title varchar(255), primary key (EVENT_ID))
[java] 15:46:15,522 ERROR SchemaExport:273 - Unexpected token: GENERATED in
statement [create table EVENTS (EVENT_ID bigint generated by default as identit
y (start with 1), EVENT_DATE timestamp, title varchar(255), primary key (EVENT_I
D))]
[java] 15:46:15,522 INFO SchemaExport:194 - schema export complete
[java] Hibernate: insert into EVENTS (EVENT_ID, EVENT_DATE, title) values (
null, ?, ?)
[java] 15:46:15,909 WARN JDBCExceptionReporter:71 - SQL Error: 0, SQLState
: S0002
[java] 15:46:15,909 ERROR JDBCExceptionReporter:72 - Table not found: EVENT
S in statement [insert into EVENTS (EVENT_ID, EVENT_DATE, title) values (null, '
2006-08-25 15:46:11.251', 'My Event')]
[java] Exception in thread "main" org.hibernate.exception.SQLGrammarExcepti
on: could not insert: [events.Event]
[java] at org.hibernate.exception.SQLStateConverter.convert(SQLStateCon
verter.java:67)
[java] at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExcep
tionHelper.java:43)
[java] at org.hibernate.id.insert.AbstractSelectingDelegate.performInse
rt(AbstractSelectingDelegate.java:40)
[java] at org.hibernate.persister.entity.AbstractEntityPersister.insert
(AbstractEntityPersister.java:2044)
[java] at org.hibernate.persister.entity.AbstractEntityPersister.insert
(AbstractEntityPersister.java:2481)
[java] at org.hibernate.action.EntityIdentityInsertAction.execute(Entit
yIdentityInsertAction.java:47)
[java] at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248
)
[java] at org.hibernate.event.def.AbstractSaveEventListener.performSave
OrReplicate(AbstractSaveEventListener.java:290)
[java] at org.hibernate.event.def.AbstractSaveEventListener.performSave
(AbstractSaveEventListener.java:180)
[java] at org.hibernate.event.def.AbstractSaveEventListener.saveWithGen
eratedId(AbstractSaveEventListener.java:108)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.save
WithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
[java] at org.hibernate.event.def.DefaultSaveEventListener.saveWithGene
ratedOrRequestedId(DefaultSaveEventListener.java:33)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.enti
tyIsTransient(DefaultSaveOrUpdateEventListener.java:175)
[java] at org.hibernate.event.def.DefaultSaveEventListener.performSaveO
rUpdate(DefaultSaveEventListener.java:27)
[java] at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSa
veOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
[java] at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:537)
[java] at org.hibernate.impl.SessionImpl.save(SessionImpl.java:525)
[java] at org.hibernate.impl.SessionImpl.save(SessionImpl.java:521)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces
sorImpl.java:39)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMet
hodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:585)
[java] at org.hibernate.context.ThreadLocalSessionContext$TransactionPr
otectionWrapper.invoke(ThreadLocalSessionContext.java:301)
[java] at $Proxy0.save(Unknown Source)
[java] at events.EventManager.createAndStoreEvent(Unknown Source)
[java] at events.EventManager.main(Unknown Source)
[java] Caused by: java.sql.SQLException: Table not found: EVENTS in stateme
nt [insert into EVENTS (EVENT_ID, EVENT_DATE, title) values (null, '2006-08-25 1
5:46:11.251', 'My Event')]
[java] at org.hsqldb.Trace.getError(Trace.java:180)
[java] at org.hsqldb.Result.<init>(Result.java:175)
[java] at org.hsqldb.jdbcConnection.executeHSQL(jdbcConnection.java:907
)
[java] at org.hsqldb.jdbcConnection.execute(jdbcConnection.java:718)
[java] at org.hsqldb.jdbcStatement.fetchResult(jdbcStatement.java:686)
[java] at org.hsqldb.jdbcStatement.executeUpdate(jdbcStatement.java:85)
[java] at org.hsqldb.jdbcPreparedStatement.executeUpdate(jdbcPreparedSt
atement.java:152)
[java] at org.hibernate.id.insert.AbstractSelectingDelegate.performInse
rt(AbstractSelectingDelegate.java:33)
[java] ... 23 more
[java] Java Result: 1
BUILD SUCCESSFUL
Total time: 10 seconds
Name and version of the database you are using:
hsqldb
The generated SQL (show_sql=true):
Debug level Hibernate log excerpt:
Problems with Session and transaction handling?
Read this:
http://hibernate.org/42.html