Hi all
I have been running into a problem with Cloudscape embedded version with WASD 5.1 and I am hoping somebody could enlighten me on this issue.
First of all, I am using 2.0.3 as Hibernate version due to project restrictions (legacy code has been already developed using this version and nobody has had the time to test it against most update Hibernate's version). I suspect there is backwards compatibility but well....
so, this is the setup am having:
-Hibernate 2.0.3
-Cloudscape 5.0 embedded version with WSAD 5.1
-Using EJB stateless session
Following are the mapping files:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin
http://boss.bekk.no/boss/middlegen/
http://hibernate.sourceforge.net/
-->
<class name="com.accovia.bookingManager.businessobjects.MasterBookingFile" table="MASTER_BOOKING_FILE" dynamic-update="true">
<id name="id" type="java.lang.String" column="ID">
<!-- <generator class="assigned" /> -->
<generator class="com.accovia.infra.utilities.hibernate.SessionBeanHiLoGenerator">
<param name="table">HI_VALUES</param>
<param name="column">next_hi</param>
<param name="max_lo">100</param>
</generator>
</id>
<version name="version" type="int" column="VERSION" />
<property name="fileNumber" type="java.lang.String" column="FILE_NUMBER" length="128" />
<property name="note" type="java.lang.String" column="NOTE" length="1024" />
<property name="createdBy" type="java.lang.String" column="CREATED_BY" length="64" />
<property name="creationDate" type="java.sql.Timestamp" column="CREATION_DATE" length="-1" />
<!-- associations -->
<!-- bi-directional one-to-many association to BookingFileReference -->
<set name="bookingFileReferences" lazy="true" inverse="true" cascade="all-delete-orphan">
<key>
<column name="MASTER_FILE_ID" />
</key>
<one-to-many class="com.accovia.bookingManager.businessobjects.BookingFileReference" />
</set>
</class>
</hibernate-mapping>
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin
http://boss.bekk.no/boss/middlegen/
http://hibernate.sourceforge.net/
-->
<class name="com.accovia.bookingManager.businessobjects.BookingFileReference" table="BOOKING_FILE_REFERENCE" dynamic-update="true">
<id name="id" type="java.lang.String" column="ID" unsaved-value="any">
<generator class="com.accovia.infra.utilities.hibernate.SessionBeanHiLoGenerator">
<param name="table">HI_VALUES</param>
<param name="column">next_hi</param>
<param name="max_lo">100</param>
</generator>
<!-- <generator class="assigned" /> -->
</id>
<version name="version" type="int" column="VERSION"/>
<property name="domainName" type="java.lang.String" column="DOMAIN_NAME" length="255" />
<property name="domainFileNumber" type="java.lang.String" column="DOMAIN_FILE_NUMBER" length="128" />
<property name="note" type="java.lang.String" column="NOTE" length="1024" />
<property name="createdBy" type="java.lang.String" column="CREATED_BY" length="64" />
<property name="creationDate" type="java.sql.Timestamp" column="CREATION_DATE" length="-1" />
<!-- associations -->
<!-- bi-directional many-to-one association to MasterBookingFile -->
<many-to-one name="masterBookingFile" class="com.accovia.bookingManager.businessobjects.MasterBookingFile" not-null="true">
<column name="MASTER_FILE_ID" />
</many-to-one>
</class>
</hibernate-mapping>
These are the java objects:
Code:
package com.accovia.bookingManager.businessobjects;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class MasterBookingFile implements Serializable {
/** identifier field */
private String id;
/** nullable persistent field */
private String fileNumber;
/** nullable persistent field */
private String note;
/** nullable persistent field */
private String createdBy;
/** nullable persistent field */
private Date creationDate;
/** nullable persistent field */
private int version;
/** persistent field */
private Set bookingFileReferences;
/** full constructor */
public MasterBookingFile(String id, String fileNumber, String note, String createdBy, Date creationDate, int version, Set bookingFileReferences) {
this.id = id;
this.fileNumber = fileNumber;
this.note = note;
this.createdBy = createdBy;
this.creationDate = creationDate;
this.version = version;
this.bookingFileReferences = bookingFileReferences;
}
/** default constructor */
public MasterBookingFile() {
}
/** minimal constructor */
public MasterBookingFile(String id, Set bookingFileReferences) {
this.id = id;
this.bookingFileReferences = bookingFileReferences;
}
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public String getFileNumber() {
return this.fileNumber;
}
public void setFileNumber(String fileNumber) {
this.fileNumber = fileNumber;
}
public String getNote() {
return this.note;
}
public void setNote(String note) {
this.note = note;
}
public String getCreatedBy() {
return this.createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Date getCreationDate() {
return this.creationDate;
}
public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}
public int getVersion() {
return this.version;
}
public void setVersion(int version) {
this.version = version;
}
public Set getBookingFileReferences() {
return this.bookingFileReferences;
}
public void setBookingFileReferences(Set bookingFileReferences) {
this.bookingFileReferences = bookingFileReferences;
}
public String toString() {
return new ToStringBuilder(this)
.append("id", getId())
.toString();
}
public boolean equals(Object other) {
if ( !(other instanceof MasterBookingFile) ) return false;
MasterBookingFile castOther = (MasterBookingFile) other;
return new EqualsBuilder()
.append(this.getId(), castOther.getId())
.isEquals();
}
public int hashCode() {
return new HashCodeBuilder()
.append(getId())
.toHashCode();
}
/**
* Removes a BookingFileReference from
* a MasterBookingFile
*
* @param bfr
*/
public void removeBookingFileReference(BookingFileReference bfr){
bfr.setMasterBookingFile(null);
this.getBookingFileReferences().remove(bfr);
}
/**
* Adds a BookingFileReference from
* a MasterBookingFile
*
* @param bfr
*/
public void addBookingFileReference(BookingFileReference bfr){
bfr.setMasterBookingFile(this);
this.getBookingFileReferences().add(bfr);
}
}
Code:
package com.accovia.bookingManager.businessobjects;
import java.io.Serializable;
import java.util.Date;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class BookingFileReference implements Serializable {
/** identifier field */
private String id;
/** persistent field */
private int version;
/** nullable persistent field */
private String domainName;
/** nullable persistent field */
private String domainFileNumber;
/** nullable persistent field */
private String note;
/** nullable persistent field */
private String createdBy;
/** nullable persistent field */
private Date creationDate;
/** persistent field */
private com.accovia.bookingManager.businessobjects.MasterBookingFile masterBookingFile;
/** full constructor */
public BookingFileReference(String id, int version, String domainName, String domainFileNumber, String note, String createdBy, Date creationDate, com.accovia.bookingManager.businessobjects.MasterBookingFile masterBookingFile) {
this.id = id;
this.version = version;
this.domainName = domainName;
this.domainFileNumber = domainFileNumber;
this.note = note;
this.createdBy = createdBy;
this.creationDate = creationDate;
this.masterBookingFile = masterBookingFile;
}
/** default constructor */
public BookingFileReference() {
}
/** minimal constructor */
public BookingFileReference(String id, int version, com.accovia.bookingManager.businessobjects.MasterBookingFile masterBookingFile) {
this.id = id;
this.version = version;
this.masterBookingFile = masterBookingFile;
}
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public int getVersion() {
return this.version;
}
public void setVersion(int version) {
this.version = version;
}
public String getDomainName() {
return this.domainName;
}
public void setDomainName(String domainName) {
this.domainName = domainName;
}
public String getDomainFileNumber() {
return this.domainFileNumber;
}
public void setDomainFileNumber(String domainFileNumber) {
this.domainFileNumber = domainFileNumber;
}
public String getNote() {
return this.note;
}
public void setNote(String note) {
this.note = note;
}
public String getCreatedBy() {
return this.createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public Date getCreationDate() {
return this.creationDate;
}
public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}
public com.accovia.bookingManager.businessobjects.MasterBookingFile getMasterBookingFile() {
return this.masterBookingFile;
}
public void setMasterBookingFile(com.accovia.bookingManager.businessobjects.MasterBookingFile masterBookingFile) {
this.masterBookingFile = masterBookingFile;
}
public String toString() {
return new ToStringBuilder(this)
.append("id", getId())
.toString();
}
public boolean equals(Object other) {
if ( !(other instanceof BookingFileReference) ) return false;
BookingFileReference castOther = (BookingFileReference) other;
return new EqualsBuilder()
.append(this.getId(), castOther.getId())
.isEquals();
}
public int hashCode() {
return new HashCodeBuilder()
.append(getId())
.toHashCode();
}
}
This is the code :
Code:
MasterBookingFile bookingFileToUpdate = null;
bookingFileToUpdate = (MasterBookingFile) retrieveObject(session, MasterBookingFile.class, bf.getId());
bookingFileToUpdate.setCreationDate(new Date(System.currentTimeMillis()));
bookingFileToUpdate.setFileNumber(" F00003");
bookingFileToUpdate.setNote("this is just a test");
for (int i = 0; i < 10; i++)
{
BookingFileReference bookingFileReference = new BookingFileReference();
bookingFileReference.setDomainName("domain name");
bookingFileReference.setDomainFileNumber("domain number");
//bookingFileReference.setId(pkf+new Integer(i).toString());
bookingFileReference.setMasterBookingFile(bookingFileToUpdate);
bookingFileToUpdate.addBookingFileReference(bookingFileReference);
ses.flush();
close(); //close session
return bookingFileToUpdate;
}
and the exception happens when code executes this line in the above code
Code:
bookingFileToUpdate.addBookingFileReference(bookingFileReference);
Exception:
Quote:
[27/04/04 15:02:51:516 EDT] 122c07e7 BatcherImpl W net.sf.hibernate.impl.BatcherImpl TRAS0014I: The following exception was logged SQL Exception: Feature not implemented: getQueryTimeout.
at db2j.s.h.tq_(Unknown Source)
at db2j.s.h.newCloudscapeSQLException(Unknown Source)
at db2j.s.h.notImplemented(Unknown Source)
at db2j.s.g.getQueryTimeout(Unknown Source)
at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.getQueryTimeout(WSJdbcStatement.java:641)
at net.sf.hibernate.impl.BatcherImpl.closeQueryStatement(BatcherImpl.java:122)
at net.sf.hibernate.impl.BatcherImpl.closeQueryStatement(BatcherImpl.java:87)
at net.sf.hibernate.loader.Loader.closeQueryStatement(Loader.java:566)
at net.sf.hibernate.loader.Loader.doFind(Loader.java:190)
at net.sf.hibernate.loader.Loader.loadCollection(Loader.java:602)
at net.sf.hibernate.loader.OneToManyLoader.initialize(OneToManyLoader.java:102)
at net.sf.hibernate.impl.SessionImpl.initialize(SessionImpl.java:2897)
at net.sf.hibernate.collection.PersistentCollection.initialize(PersistentCollection.java:151)
at net.sf.hibernate.collection.PersistentCollection.write(PersistentCollection.java:72)
at net.sf.hibernate.collection.Set.add(Set.java:162)
at com.accovia.bookingManager.businessobjects.MasterBookingFile.addBookingFileReference(MasterBookingFile.java:151)
at com.accovia.bookingManager.dao.impls.BookingFileDaoImpl.modifyBookingFile(BookingFileDaoImpl.java:152)
at com.accovia.bookingManager.dao.impls.BookingFileDaoImpl.updateBookingFile(BookingFileDaoImpl.java:318)
at com.accovia.bookingManager.ejb.BaseBookingFileBrokerBean.updateMasterBookingFile(BaseBookingFileBrokerBean.java:288)
at com.accovia.bookingManager.ejb.EJSLocalStatelessBookingFileBroker_dd76882b.updateMasterBookingFile(EJSLocalStatelessBookingFileBroker_dd76882b.java:183)
at com.accovia.bookingManager.ejb.BookingQueryManagerBean.processQuery(BookingQueryManagerBean.java:393)
at com.accovia.bookingManager.ejb.BookingQueryManagerBean.processQuery(BookingQueryManagerBean.java:354)
at com.accovia.infra.query.ejb.EJSRemoteStatelessBookingQueryManager_fd2f0bb0.processQuery(EJSRemoteStatelessBookingQueryManager_fd2f0bb0.java:22)
at com.accovia.infra.query.ejb._EJSRemoteStatelessBookingQueryManager_fd2f0bb0_Tie.processQuery(_EJSRemoteStatelessBookingQueryManager_fd2f0bb0_Tie.java:157)
at com.accovia.infra.query.ejb._EJSRemoteStatelessBookingQueryManager_fd2f0bb0_Tie._invoke(_EJSRemoteStatelessBookingQueryManager_fd2f0bb0_Tie.java:98)
at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:615)
at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:468)
at com.ibm.rmi.iiop.ORB.process(ORB.java:396)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1608)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2164)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
.
SQL Exception: Feature not implemented: getQueryTimeout.
at db2j.s.h.tq_(Unknown Source)
at db2j.s.h.newCloudscapeSQLException(Unknown Source)
at db2j.s.h.notImplemented(Unknown Source)
at db2j.s.g.getQueryTimeout(Unknown Source)
at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.getQueryTimeout(WSJdbcStatement.java:641)
at net.sf.hibernate.impl.BatcherImpl.closeQueryStatement(BatcherImpl.java:122)
at net.sf.hibernate.impl.BatcherImpl.closeQueryStatement(BatcherImpl.java:87)
at net.sf.hibernate.loader.Loader.closeQueryStatement(Loader.java:566)
at net.sf.hibernate.loader.Loader.doFind(Loader.java:190)
at net.sf.hibernate.loader.Loader.loadCollection(Loader.java:602)
at net.sf.hibernate.loader.OneToManyLoader.initialize(OneToManyLoader.java:102)
at net.sf.hibernate.impl.SessionImpl.initialize(SessionImpl.java:2897)
at net.sf.hibernate.collection.PersistentCollection.initialize(PersistentCollection.java:151)
at net.sf.hibernate.collection.PersistentCollection.write(PersistentCollection.java:72)
at net.sf.hibernate.collection.Set.add(Set.java:162)
at com.accovia.bookingManager.businessobjects.MasterBookingFile.addBookingFileReference(MasterBookingFile.java:151)
at com.accovia.bookingManager.dao.impls.BookingFileDaoImpl.modifyBookingFile(BookingFileDaoImpl.java:152)
at com.accovia.bookingManager.dao.impls.BookingFileDaoImpl.updateBookingFile(BookingFileDaoImpl.java:318)
at com.accovia.bookingManager.ejb.BaseBookingFileBrokerBean.updateMasterBookingFile(BaseBookingFileBrokerBean.java:288)
at com.accovia.bookingManager.ejb.EJSLocalStatelessBookingFileBroker_dd76882b.updateMasterBookingFile(EJSLocalStatelessBookingFileBroker_dd76882b.java:183)
at com.accovia.bookingManager.ejb.BookingQueryManagerBean.processQuery(BookingQueryManagerBean.java:393)
at com.accovia.bookingManager.ejb.BookingQueryManagerBean.processQuery(BookingQueryManagerBean.java:354)
at com.accovia.infra.query.ejb.EJSRemoteStatelessBookingQueryManager_fd2f0bb0.processQuery(EJSRemoteStatelessBookingQueryManager_fd2f0bb0.java:22)
at com.accovia.infra.query.ejb._EJSRemoteStatelessBookingQueryManager_fd2f0bb0_Tie.processQuery(_EJSRemoteStatelessBookingQueryManager_fd2f0bb0_Tie.java:157)
at com.accovia.infra.query.ejb._EJSRemoteStatelessBookingQueryManager_fd2f0bb0_Tie._invoke(_EJSRemoteStatelessBookingQueryManager_fd2f0bb0_Tie.java:98)
at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:615)
at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:468)
at com.ibm.rmi.iiop.ORB.process(ORB.java:396)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1608)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2164)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
A similar error happens when I run a SELECT-like statement.I know that it is not that important, but now when I want to update a parent with a collection of children, it only adds one child in the collection....This did not happen when the application assigned the primary key.
thanks to all you who has taken time in reading this long posting
cheers
Patria[/quote][/code]