-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Please help. Problem with the CustomizedIdGenerator
PostPosted: Mon Oct 18, 2004 11:30 pm 
Beginner
Beginner

Joined: Mon Sep 27, 2004 3:48 am
Posts: 23
Hibernate version:2.1.6

I use the JBoss 4.0.0's datasource. I encountered a problem in hibernate source code, there's some lines code like these in net.sf.hibernate.id.TableGenerator.generate() method.
Code:
...
Connection conn  = session.getBatcher().openConnection();
...
...
while (rows==0);         
conn.commit();
...


When running to "conn.commit();", it thows a SQLException like the following:
Code:

java.sql.SQLException: You cannot commit with autocommit set!
   at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:501)
   at org.jboss.resource.adapter.jdbc.WrappedConnection.commit(WrappedConnection.java:451)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)


It is obviously that the current connection(conn) object is in auto-commit mode, so, how to make the connection(conn) object to be in on-auto-commit mode? The following is my code and configuration files. Should I make some changes on the configuration files?

PO:
Code:
public class Company {
    private String id;
    private String name;
    private String address;

    public Company() {
    }
    ........
}   


CustomizedIdGenerator.java
Code:
public class CustomizedIdGenerator extends TableGenerator {
    private String prefix;

        private static final Log log = LogFactory.getLog(CustomizedIdGenerator.class);

        public void configure(Type type, Properties params, Dialect d) {
            super.configure(type, params, d);
            prefix = params.getProperty("prefix") == null ? "Pre" :
                     params.getProperty("prefix");
        }

        public synchronized Serializable generate(SessionImplementor session,
                                                  Object obj) throws SQLException,
                HibernateException {
            Integer integer = (Integer)super.generate(session, obj);
            return prefix+integer;

        }
}


The mapping file:
Code:
...
<id name="id" column="id" type="java.lang.String">
    <generator class="com.test.po.CustomizedIdGenerator">
        <param name="table">uid_table</param>
        <param name="column">next_hi_value_column</param>
        <param name="prefix">C</param>
    </generator>
</id>
...



The hibernate.cfg.xml
Code:
....
<hibernate-configuration>
   <!-- a SessionFactory instance listed as /jndi/name -->
   <session-factory>
      <!-- properties -->
      <property name="connection.datasource">MSSQLDS</property>
      <property name="dialect">net.sf.hibernate.dialect.SQLServerDialect</property>
      <property name="show_sql">true</property>
      <property name="use_outer_join">true</property>
.....


The hibernate.properties:
Code:
hibernate.jndi.class=org.jnp.interfaces.NamingContextFactory
hibernate.jndi.url=jnp://localhost:1099
hibernate.jndi.java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 18, 2004 11:41 pm 
Beginner
Beginner

Joined: Mon Sep 27, 2004 3:48 am
Posts: 23
BTW:

I invoke the JBoss 4.0.0's datasource out of the container(this is the JBoss 4.0.0's new feature), everying is OK except this problem.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Oct 19, 2004 6:05 am 
Beginner
Beginner

Joined: Mon Sep 27, 2004 3:48 am
Posts: 23
I just tested it running JSP in JBoss 4.0.0 container, I got the same error message.
Code:
java.sql.SQLException: You cannot commit with autocommit set!
        at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:501)
        at org.jboss.resource.adapter.jdbc.WrappedConnection.commit(WrappedConnection.java:451)
        at net.sf.hibernate.id.TableGenerator.generate(TableGenerator.java:126)
        at com.achievo.hibernate.po.CustomizedIdGenerator.generate(CustomizedIdGenerator.java:50)
        at net.sf.hibernate.impl.SessionImpl.saveWithGeneratedIdentifier(SessionImpl.java:765)
        at net.sf.hibernate.impl.SessionImpl.save(SessionImpl.java:738)
        at org.apache.jsp.CustomizedIdGenerator_jsp._jspService(CustomizedIdGenerator_jsp.java:86)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:44)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:169)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
        at java.lang.Thread.run(Thread.java:534)


Top
 Profile  
 
 Post subject:
PostPosted: Tue Oct 19, 2004 6:08 am 
Hibernate Team
Hibernate Team

Joined: Tue Aug 26, 2003 12:50 pm
Posts: 5130
Location: Melbourne, Australia
As per the Hibernate documentation, you cannot use hilo id generation in a JTA environment.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.