Author: steve.ebersole(a)jboss.com
Date: 2007-03-29 09:25:48 -0400 (Thu, 29 Mar 2007)
New Revision: 11365
Added:
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/where/NumericTrueFalseType.java
Modified:
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/where/File.hbm.xml
Log:
test suite fixes : postgresql (boolean handling)
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/where/File.hbm.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/where/File.hbm.xml 2007-03-29
13:25:25 UTC (rev 11364)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/where/File.hbm.xml 2007-03-29
13:25:48 UTC (rev 11365)
@@ -6,15 +6,14 @@
<!--
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"/>
Added:
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/where/NumericTrueFalseType.java
===================================================================
---
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/where/NumericTrueFalseType.java
(rev 0)
+++
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/where/NumericTrueFalseType.java 2007-03-29
13:25:48 UTC (rev 11365)
@@ -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";
+ }
+}
Show replies by date