开发者

No Row inserted when using hibernate example

I, trying to use Hibernate 3.5.3 with Postgresql 8.4 and PostGreSQL-8.4.701.jdbc4.jar and after transaction completed no actually data inserted into table.

this is the table:

   CREATE TABLE doolloop2.dluser
(
  id bigint NOT NULL,
  firstname character varying(255),
  lastname character varying(255),
  email character varying(255),
  CONSTRAINT users_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE doolloop2.dluser OWNER TO doolloop2;

I'm trying to map the following class into this table

public class DlUser {
    private long Id;
    private String firstname;
    private String lastname;
    private String email;
    public DlUser()
    {

    }
    public void setId(long id) {
        this.Id = id;
    }
    public long getId() {
        return this.Id;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public void setFirstName(String name) {
        this.firstname = name;
    }
    public void setLastName(String name) {
        this.lastname = name;
    }
    public String getEmail() {
        return this.email;
    }
    public String getFirstName() {
        return this.firstname;
    }
    public String getLastName() {
        return this.lastname;
    }
}

Then I have my hibernate.cfg.xml which looks like this:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
      <property name="hibernate.connection.driver_class">
org.postgresql.Driver</property>
      <property name="hibernate.connection.url">
        jdbc:postgresql://127.0.0.1:5432/doolloop2</property>
      <property name="hibernate.connection.username">doolloop2</property>
      <property name="hibernate.connection.password">doolloop</property>
      <property name="hibernate.connection.pool_size">10</property>
      <property name="show_sql">true</property>
      <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
      <property name="hibernate.hbm2ddl.auto">update</property>
      <!-- Mapping files -->
      <mapping resource="DlUser.hbm.xml"/>
</session-factory>
</hibernate-configuration>

My DlUser.hbm.xml file looks like this:

<?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="com.doolloop.DlDataServices.Session.DlUser" table="DlUser">
  <id name="Id" column="id" >
        <generator class="assigned"></generator>
 </id>
  <property name="firstName">
     <column name="firstname" />
  </property>
  <property name="lastName">
    <column name="lastname"/>
  </property>
  <property name="email">
    <column name="email"/>
  </property>
 </class>
</hibernate-mapping>

The main code looks like this:

public static void main(String[] args) {
    Session session = null;
    try{
          // This step will read hibernate.cfg.xml and prepare hibernate for use
          SessionFactory sessionFactory = new 
    Configuration().configure().buildSessionFactory();
           session =sessionFactory.openSession();
            //Create new instance of Contact and set values in it by reading them from form object
             System.out.println("Inserting Record");
            DlUser user = new DlUser();
            user.setFirstName("Test");
            user.setLastName("Test");
            user.setEmail("Test@yahoo.com");
            session.save(user);
            System.out.println("Done");
          // Actual contact insertion will happen at this step
          session.flush();
          session.close();
       }
       catch(HibernateException ex)
       {
           System.out.println(ex.getMessage());
       }              
}

and Console output is the following:

Sep 25, 2010 2:45:09 AM org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.5.3-Final
Sep 25, 2010 2:45:09 AM org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
Sep 25, 2010 2:45:09 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : javassist
Sep 25, 2010 2:45:09 AM org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
Sep 25, 2010 2:45:09 AM org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
Sep 25, 2010 2:45:09 AM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
Sep 25, 2010 2:45:09 AM org.hibernate.cfg.Configuration addResource
INFO: Reading mappings from resource : DlUser.hbm.xml
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
INFO: Mapping class: com.doolloop.DlDataServices.Session.DlUser -> DlUser
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
Sep 25, 2010 2:45:10 AM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
Sep 25, 2010 2:45:10 AM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 10
Sep 25, 2010 2:45:10 AM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: false
Sep 25, 2010 2:45:10 AM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: org.postgresql.Driver at URL: jdbc:postgresql://127.0.0.1:5432/doolloop2
Sep 25, 2010 2:45:10 AM org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {user=doolloop2, password=****}
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: RDBMS: PostgreSQL, version: 8.4.4
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.4 JDBC4 (build 701)
Sep 25, 2010 2:45:10 AM org.hibernate.dialect.Dialect <init>
INFO: Using dialect: org.hibernate.dialect.PostgreSQLDialect
Sep 25, 2010 2:45:10 AM org.hibernate.engine.jdbc.JdbcSupportLoader useContextualLobCreation
INFO: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
S开发者_如何转开发ep 25, 2010 2:45:10 AM org.hibernate.transaction.TransactionFactoryFactory buildTransactionFactory
INFO: Using default transaction strategy (direct JDBC transactions)
Sep 25, 2010 2:45:10 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)
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic flush during beforeCompletion(): disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Automatic session close at end of transaction: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch size: 15
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC batch updates for versioned data: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Scrollable result sets: enabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: JDBC3 getGeneratedKeys(): enabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Connection release mode: auto
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default batch fetch size: 1
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Generate SQL with comments: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL updates by primary key: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Order SQL inserts for batching: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory createQueryTranslatorFactory
INFO: Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
Sep 25, 2010 2:45:10 AM org.hibernate.hql.ast.ASTQueryTranslatorFactory <init>
INFO: Using ASTQueryTranslatorFactory
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query language substitutions: {}
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: JPA-QL strict compliance: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Second-level cache: enabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Query cache: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory createRegionFactory
INFO: Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Optimize cache for minimal puts: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Structured second-level cache entries: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Echoing all SQL to stdout
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Statistics: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Deleted entity synthetic identifier rollback: disabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default entity-mode: pojo
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Named query checking : enabled
Sep 25, 2010 2:45:10 AM org.hibernate.cfg.SettingsFactory buildSettings
INFO: Check Nullability in Core (should be disabled when Bean Validation is on): enabled
Sep 25, 2010 2:45:10 AM org.hibernate.impl.SessionFactoryImpl <init>
INFO: building session factory
Sep 25, 2010 2:45:10 AM org.hibernate.impl.SessionFactoryObjectFactory addInstance
INFO: Not binding factory to JNDI, no JNDI name configured
Sep 25, 2010 2:45:10 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: Running hbm2ddl schema update
Sep 25, 2010 2:45:10 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: fetching database metadata
Sep 25, 2010 2:45:10 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: updating schema
Sep 25, 2010 2:45:10 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: table found: doolloop2.dluser
Sep 25, 2010 2:45:10 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: columns: [id, email, lastname, firstname]
Sep 25, 2010 2:45:10 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: foreign keys: []
Sep 25, 2010 2:45:10 AM org.hibernate.tool.hbm2ddl.TableMetadata <init>
INFO: indexes: [users_pkey]
Sep 25, 2010 2:45:10 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: schema update complete
Inserting Record
Done
Hibernate: insert into DlUser (firstname, lastname, email, id) values (?, ?, ?, ?)

Then, when I'm selecting from this table, it's empty. I googled for a long time but haven't found any wise explanation what is happening here. Could anybody just help?

Thank you in advance, Danny.


You need to define clear transaction boundaries by beginning and committing transactions and to run your persistent code inside these boundaries. As mentioned in the Javadoc of the Session, a typical transaction should use the following idiom:

Session sess = factory.openSession();
Transaction tx;
try {
    tx = sess.beginTransaction();
    //do some work
    ...
    tx.commit();
}
catch (Exception e) {
    if (tx!=null) tx.rollback();
    throw e;
}
finally {
    sess.close();
}

See also

  • Sessions and transactions


Commit your transaction. The log file says autocommit is off.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜