Archive for the ‘Hibernate’ Category

Java: c3p0.ComboPooledDataSource broken pipe Error With MySQL

Monday, April 13th, 2009

This usually happen when the client connection pool maintained connection longer than the database connection. Fix: set the maxIdleTime property:

 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  <property name="driverClass" value="${db.driverClass}" />
  <property name="jdbcUrl" value="${db.jdbcUrl}" />
  <property name="user" value="${db.user}" />
  <property name="password" value="${db.password}" />
  <!-- 1/2 hr. MySQL server default connection timeout is 43200 (12hrs) -->
  <property name="maxIdleTime" value="1800" />
 </bean>

Information Source: Broken pipe

Hibernate (annotation): Error: TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing

Friday, March 27th, 2009

If you get an error like this one

Hibernate: Error: TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing..

It is probably because you did not annotate your ManyToOne with the Hibernate SAVE_UPATE Cascade annotation:

@ManyToOne()
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
public Category getCategory() {
        return category;
}

Note, putting only

@ManyToOne(cascade = {CascadeType.MERGE,CascadeType.PERSIST})
public Category getCategory() {

Will not resolve the issue.

Java: Hibernate 3.4 and SLF4J Impl Class not found and Singleton error

Friday, March 20th, 2009

Hibernate 3.4 does not have a SLF4J implementation, and if you download the latest implementation from http://www.slf4j.org/download.html you will get an imcompatible impl version (1.5.6 impl with the 1.5.2 api from Hibernate).

Just do the following:

  1. Remove all slf4j*.jar from your lib.
  2. Add the the latest sfl4j-api (i.e. slf4j-api-1.5.2)
  3. Add the latest impl slf4j-log4j12-1.5.6-.jar

NOTE: If you use Hibernate, make sure to use the slf4j-log4j*.jar, otherwise, changing the log4j.properties will have no effect. (see Turn off logging from log4j and slf4j)