[hibernate-commits] Hibernate SVN: r11364 - trunk/Hibernate3/test/org/hibernate/test/where.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Mar 29 09:25:26 EDT 2007


Author: steve.ebersole at jboss.com
Date: 2007-03-29 09:25:25 -0400 (Thu, 29 Mar 2007)
New Revision: 11364

Added:
   trunk/Hibernate3/test/org/hibernate/test/where/NumericTrueFalseType.java
Modified:
   trunk/Hibernate3/test/org/hibernate/test/where/File.hbm.xml
Log:
test suite fixes : postgresql (boolean handling)

Modified: trunk/Hibernate3/test/org/hibernate/test/where/File.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/where/File.hbm.xml	2007-03-29 13:09:51 UTC (rev 11363)
+++ trunk/Hibernate3/test/org/hibernate/test/where/File.hbm.xml	2007-03-29 13:25:25 UTC (rev 11364)
@@ -1,25 +1,24 @@
 <?xml version="1.0"?>
-<!DOCTYPE hibernate-mapping PUBLIC 
+<!DOCTYPE hibernate-mapping PUBLIC
 	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
-<!-- 
+<!--
     Demonstrates use of a class-level where restriction
  -->
-<hibernate-mapping 
-		package="org.hibernate.test.where">
+<hibernate-mapping package="org.hibernate.test.where">
 
     <class name="File" where="deleted=0" table="T_FILE">
     	<id name="id">
     		<generator class="increment"/>
     	</id>
     	<property name="name"/>
-    	<property name="deleted"/>
+    	<property name="deleted" type="org.hibernate.test.where.NumericTrueFalseType"/>
     	<many-to-one name="parent"/>
     	<set name="children" inverse="true" where="deleted=0">
     		<key column="parent"/>
     		<one-to-many class="File"/>
     	</set>
-    </class>	
+    </class>
 
 </hibernate-mapping>

Added: trunk/Hibernate3/test/org/hibernate/test/where/NumericTrueFalseType.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/where/NumericTrueFalseType.java	                        (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/where/NumericTrueFalseType.java	2007-03-29 13:25:25 UTC (rev 11364)
@@ -0,0 +1,53 @@
+package org.hibernate.test.where;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.PreparedStatement;
+import java.sql.Types;
+
+import org.hibernate.type.BooleanType;
+import org.hibernate.dialect.Dialect;
+
+/**
+ * Maps int db values to boolean java values.  Zero is considered false; any
+ * non-zero value is considered true.
+ *
+ * @author Steve Ebersole
+ */
+public class NumericTrueFalseType extends BooleanType {
+
+	public Object get(ResultSet rs, String name) throws SQLException {
+		int value = rs.getInt( name );
+		if ( rs.wasNull() ) {
+			return getDefaultValue();
+		}
+		else if ( value == 0 ) {
+			return Boolean.FALSE;
+		}
+		else {
+			return Boolean.TRUE;
+		}
+	}
+
+	public void set(PreparedStatement st, Object value, int index) throws SQLException {
+		if ( value == null ) {
+			st.setNull( index, Types.INTEGER );
+		}
+		else {
+			boolean bool = ( ( Boolean ) value ).booleanValue();
+			st.setInt( index, bool ? 1 : 0 );
+		}
+	}
+
+	public String objectToSQLString(Object value, Dialect dialect) throws Exception {
+		return ( ( Boolean ) value ).booleanValue() ? "1" : "0";
+	}
+
+	public int sqlType() {
+		return Types.INTEGER;
+	}
+
+	public String getName() {
+		return "numeric_boolean";
+	}
+}




More information about the hibernate-commits mailing list