HEEELLLLLPP!

I've worked throught most of the my configuration woes with OJB, JBoss 3.0.8 and HSQLDB. Everthing seems to be in place and I can query objects from the DB without a problem. The only problem is saving my objects to the DB. I get a SQL error (function not supported).

Here's the Session Bean code...

/**
 * @author <a href="mailto:[EMAIL PROTECTED]">Brian Sam-Bodden</a>
 *
 * @ejb.bean
 *      name="ConferenceFacade"
 *      type="Stateless"
 *      view-type="both"
 *      jndi-name="ejb.ConferenceFacadeHome"
 *      local-jndi-name="ejb.ConferenceFacadeLocalHome"
 * @ejb.transaction
 *      type="Required"
 * @ejb.util
 *      generate="physical"
 */
public abstract class ConferenceFacadeBean implements SessionBean {
...
    /**
     * @ejb.interface-method
     * @ejb.transaction
     *      type="NotSupported"
     *
     * @return
     */ 
    public Collection getAllConferences() {
        PersistenceBroker broker = pbf.defaultPersistenceBroker();
        Collection allConferences = Collections.EMPTY_LIST;

try {
Query query = new QueryByCriteria(Conference.class, null);
allConferences = broker.getCollectionByQuery(query);
} catch (PersistenceBrokerException pbe) {
throw new EJBException("Could not retrieve list of conferences");
} finally {
if (broker != null) broker.close();
}


        return allConferences;
    }
        
    /**
     * @ejb.interface-method
     * @ejb.transaction
     *      type="NotSupported"
     *
     * @return
     */ 
    public boolean saveConference(Conference conference) {
        PersistenceBroker broker = pbf.defaultPersistenceBroker();
        boolean result = true;
                
        try {
            broker.beginTransaction();
            broker.store(conference);
            broker.commitTransaction();
        } catch (PersistenceBrokerException pbe) {
            result = false;
            broker.abortTransaction();
        } finally {
            if (broker != null) broker.close();
        }
                
        return result;
    }           

The conference POJO

package com.ejdoab.pojos;

import java.io.Serializable;
import java.util.Date;

/**
 * @ojb.class
 *     generate-table-info="true"
 *     table="conferences"
 */
public class Conference implements Serializable {

        /**
         * @ojb.field
         *     column="PK_ID"
         *     jdbc-type="INTEGER"
         *     primarykey="true"
         *     autoincrement="true"
         */     
        protected Integer id;

        /**
         * @ojb.field
         *     column="NAME"
         *     jdbc-type="VARCHAR"
         */
        protected String name;
        
        /**
         * @ojb.field
         *     column="DESCRIPTION"
         *     jdbc-type="LONGVARCHAR"
         */     
        protected String description;
        
        /**
         * @ojb.field
         *     column="STARTDATE"
         *     jdbc-type="DATE"
         */     
        protected Date startDate;
        
        /**
         * @ojb.field
         *     column="ENDDATE"
         *     jdbc-type="DATE"
         */
        protected Date endDate;

        /**
         * @ojb.field
         *     column="ABSTRACTSUBMISSIONSTARTDATE"
         *     jdbc-type="DATE"
         */     
        protected Date abstractSubmissionStartDate;
        
        /**
         * @ojb.field
         *     column="ABSTRACTSUBMISSIONENDDATE"
         *     jdbc-type="DATE"
         */             
        protected Date abstractSubmissionEndDate;
        
        /**
         * no-arg constructor
         */
        public Conference() {
        }
        
        /**
         * all-args constructor
         *
         * @param id
         * @param name
         * @param description
         * @param startDate
         * @param endDate
         * @param abstractSubmissionStartDate
         * @param abstractSubmissionEndDate
         */
        public Conference(
                Integer id,
                String name,
                String description,
                Date startDate,
                Date endDate,
                Date abstractSubmissionStartDate,
                Date abstractSubmissionEndDate) {
                this.id = id;
                this.name = name;
                this.description = description;
                this.startDate = startDate;
                this.endDate = endDate;
                this.abstractSubmissionStartDate = abstractSubmissionStartDate;
                this.abstractSubmissionEndDate = abstractSubmissionStartDate;
        }

        //
        // getters
        //
        
        public Integer getId() {
                return id;
        }
        
        public String getName() {
                return name;
        }
        
        public String getDescription() {
                return description;
        }               

        public Date getStartDate() {
                return startDate;
        }

        public Date getEndDate() {
                return endDate;
        }

        public Date getAbstractSubmissionStartDate() {
                return abstractSubmissionStartDate;
        }
        
        public Date getAbstractSubmissionEndDate() {
                return abstractSubmissionEndDate;
        }       

    //
    // setters
    //

        public void setId(Integer integer) {
                id = integer;
        }

        public void setName(String string) {
                name = string;
        }
        
        public void setDescription(String string) {
                description = string;
        }       

        public void setStartDate(Date date) {
                startDate = date;
        }
        
        public void setEndDate(Date date) {
                endDate = date;
        }
                
        public void setAbstractSubmissionStartDate(Date date) {
                abstractSubmissionStartDate = date;
        }
        
        public void setAbstractSubmissionEndDate(Date date) {
                abstractSubmissionEndDate = date;
        }
        
        //
        //
        //
        
        public String toString() {
                return new StringBuffer()
                    .append("[Conference] id = ")
                    .append(id)
                    .append(", name = ")
                    .append(name)
                    .append(", description = ")
                    .append(description)
                    .toString();                
        }
}


The table for the Conference Objects


CREATE TABLE Conferences (
  pk_Id INTEGER NOT NULL PRIMARY KEY,
  Name varchar(64),
  Description LONGVARCHAR,
  StartDate DATETIME,
  EndDate DATETIME,
  AbstractSubmissionStartDate DATETIME,
  AbstractSubmissionEndDate DATETIME
);

The OJB XDoclet generated repository-user.xml

<!-- file containing the repository descriptions for user-defined types -->
<!-- Generated by the xdoclet-ojb module -->

<class-descriptor
    class="com.ejdoab.pojos.Conference"
    table="conferences"
>
    <field-descriptor
        name="id"
        column="PK_ID"
        jdbc-type="INTEGER"
        primarykey="true"
        autoincrement="true"
    >
    </field-descriptor>
    <field-descriptor
        name="name"
        column="NAME"
        jdbc-type="VARCHAR"
    >
    </field-descriptor>
    <field-descriptor
        name="description"
        column="DESCRIPTION"
        jdbc-type="LONGVARCHAR"
    >
    </field-descriptor>
    <field-descriptor
        name="startDate"
        column="STARTDATE"
        jdbc-type="DATE"
    >
    </field-descriptor>
    <field-descriptor
        name="endDate"
        column="ENDDATE"
        jdbc-type="DATE"
    >
    </field-descriptor>
    <field-descriptor
        name="abstractSubmissionStartDate"
        column="ABSTRACTSUBMISSIONSTARTDATE"
        jdbc-type="DATE"
    >
    </field-descriptor>
    <field-descriptor
        name="abstractSubmissionEndDate"
        column="ABSTRACTSUBMISSIONENDDATE"
        jdbc-type="DATE"
    >
    </field-descriptor>
</class-descriptor>


Here's the stack trace....



13:03:55,640 INFO [PersistenceBrokerFactoryDefaultImpl] Create PersistenceBroker instance pool, pool configuration was {when
ExhaustedAction=0, maxIdle=-1, maxActive=100, maxWait=2000, removeAbandoned=false, numTestsPerEvictionRun=10, testWhileIdle=f
alse, minEvictableIdleTimeMillis=1000000, testOnReturn=false, logAbandoned=false, removeAbandonedTimeout=300, timeBetweenEvic
tionRunsMillis=-1, testOnBorrow=false}
13:03:55,670 INFO [RepositoryPersistor] OJB Descriptor Repository: jar:file:/C:/java/jboss/jboss-3.0.8/server/tcms/tmp/deplo
y/server/tcms/deploy/ojb.sar/10.ojb.sar!/repository.xml
13:03:55,870 INFO [RepositoryPersistor] Read class descriptors took 210 ms
13:03:55,880 INFO [RepositoryPersistor] OJB Descriptor Repository: jar:file:/C:/java/jboss/jboss-3.0.8/server/tcms/tmp/deplo
y/server/tcms/deploy/ojb.sar/10.ojb.sar!/repository.xml
13:03:55,950 INFO [RepositoryPersistor] Read connection repository took 70 ms
13:03:56,010 INFO [PersistenceBrokerFactoryBaseImpl] Create new PB instance for PBKey org.apache.ojb.broker.PBKey: jcdAlias=
tcms, user=sa, password=*****, already created persistence broker instances: 0
13:03:56,060 INFO [ObjectCacheFactory] Start creating new ObjectCache instance
13:03:56,060 INFO [ObjectCacheFactory] Default ObjectCache class was org.apache.ojb.broker.cache.ObjectCacheDefaultImpl
13:03:56,060 INFO [CacheDistributor] Use property 'descriptorBasedCaches' is set 'false'
13:03:56,060 INFO [ObjectCacheFactory] Instantiate new org.apache.ojb.broker.cache.CacheDistributor class object
13:03:56,060 INFO [ObjectCacheFactory] New ObjectCache instance was created
13:03:56,311 INFO [PersistenceBrokerFactoryBaseImpl] Create new PB instance for PBKey org.apache.ojb.broker.PBKey: jcdAlias=
tcms, user=sa, password=*****, already created persistence broker instances: 1
13:03:56,311 INFO [ObjectCacheFactory] Start creating new ObjectCache instance
13:03:56,321 INFO [ObjectCacheFactory] Default ObjectCache class was org.apache.ojb.broker.cache.ObjectCacheDefaultImpl
13:03:56,321 INFO [CacheDistributor] Use property 'descriptorBasedCaches' is set 'false'
13:03:56,321 INFO [ObjectCacheFactory] Instantiate new org.apache.ojb.broker.cache.CacheDistributor class object
13:03:56,321 INFO [ObjectCacheFactory] New ObjectCache instance was created
13:03:56,361 INFO [CacheDistributor] Create new ObjectCacheImplementation for 'class org.apache.ojb.broker.util.sequence.Hig
hLowSequence'
13:03:56,371 ERROR [JdbcAccessImpl] SQLException during the execution of the insert (for a com.ejdoab.pojos.Conference): This
function is not supported
java.sql.SQLException: This function is not supported
at org.hsqldb.Trace.getError(Trace.java:180)
at org.hsqldb.Trace.getError(Trace.java:144)
at org.hsqldb.Trace.error(Trace.java:192)
at org.hsqldb.jdbcPreparedStatement.getNotSupported(jdbcPreparedStatement.java:1602)
at org.hsqldb.jdbcPreparedStatement.setCharacterStream(jdbcPreparedStatement.java:1375)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.setCharacterStream(WrappedPreparedStatement.java:644)
at org.apache.ojb.broker.platforms.PlatformDefaultImpl.setObjectForStatement(Unknown Source)
at org.apache.ojb.broker.accesslayer.StatementManager.bindInsert(Unknown Source)
at org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeInsert(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown Source)
at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(Unknown Source)
at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unknown Source)
at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(Unknown Source)
at com.ejdoab.beans.ConferenceFacadeBean.saveConference(ConferenceFacadeBean.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:660)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:77)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:210)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:98)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:313)
at org.jboss.ejb.Container.invoke(Container.java:738)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:383)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:534)
13:03:56,381 INFO [ConnectionManagerImpl] Rollback was called, do rollback on current connection null



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to