Update of /cvsroot/hibernate/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32558/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable
Modified Files:
SingleTableTest.java
Added Files:
PaperTrash.java Trash.java
Log Message:
ANN-223 generate disc value even for integers and raise an exception for chars
ANN-240 inital work, need test and refinement for @Embeddable
--- NEW FILE: PaperTrash.java ---
//$Id: PaperTrash.java,v 1.1 2006/02/13 18:18:25 epbernard Exp $
package org.hibernate.test.annotations.inheritance.singletable;
import javax.persistence.Entity;
/**
* @author Emmanuel Bernard
*/
@Entity
public class PaperTrash extends Trash {
}
--- NEW FILE: Trash.java ---
//$Id: Trash.java,v 1.1 2006/02/13 18:18:25 epbernard Exp $
package org.hibernate.test.annotations.inheritance.singletable;
import javax.persistence.Entity;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
/**
* @author Emmanuel Bernard
*/
@Entity
@DiscriminatorColumn(discriminatorType= DiscriminatorType.INTEGER)
public class Trash {
@Id @GeneratedValue private Integer id;
}
Index: SingleTableTest.java
===================================================================
RCS file: /cvsroot/hibernate/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/SingleTableTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- SingleTableTest.java 4 Nov 2005 19:25:44 -0000 1.1
+++ SingleTableTest.java 13 Feb 2006 18:18:25 -0000 1.2
@@ -1,7 +1,11 @@
//$Id$
package org.hibernate.test.annotations.inheritance.singletable;
+import java.util.List;
+
import org.hibernate.test.annotations.TestCase;
+import org.hibernate.test.annotations.inheritance.Fruit;
+import org.hibernate.test.annotations.inheritance.Apple;
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -23,10 +27,77 @@
s.close();
}
+ public void testDefault() throws Exception {
+ Session s;
+ Transaction tx;
+ s = openSession();
+ tx = s.beginTransaction();
+ Fruit f = new Fruit();
+ Apple a = new Apple();
+ s.persist(f);
+ s.persist(a);
+ tx.commit();
+ s.close();
+
+ s = openSession();
+ tx = s.beginTransaction();
+ assertEquals( 1, s.createQuery( "select count(*) from Fruit f where f.class = 'Apple'").uniqueResult() );
+ List result = s.createCriteria(Fruit.class).list();
+ assertNotNull(result);
+ assertEquals( 2, result.size() );
+ Fruit f2 = (Fruit) result.get(0);
+ checkClassType(f2, f, a);
+ f2 = (Fruit) result.get(1);
+ checkClassType(f2, f, a);
+ s.delete( result.get(0) );
+ s.delete( result.get(1) );
+ tx.commit();
+ s.close();
+ }
+
+ public void testDefaultIntegerDiscriminator() throws Exception {
+ Session s;
+ Transaction tx;
+ s = openSession();
+ tx = s.beginTransaction();
+ Trash t = new Trash();
+ PaperTrash pt = new PaperTrash();
+ s.persist(t);
+ s.persist(pt);
+ tx.commit();
+ s.close();
+
+ s = openSession();
+ tx = s.beginTransaction();
+ assertEquals( 1, s.createQuery( "select count(*) from Trash f where f.class = :disc")
+ .setString( "disc", String.valueOf( "PaperTrash".hashCode() ) ).uniqueResult() );
+ List result = s.createCriteria(Trash.class).list();
+ assertNotNull(result);
+ s.delete( result.get(0) );
+ s.delete( result.get(1) );
+ tx.commit();
+ s.close();
+ }
+
+ private void checkClassType(Fruit fruitToTest, Fruit f, Apple a) {
+ if ( fruitToTest.getId().equals( f.getId() ) ) {
+ assertFalse(fruitToTest instanceof Apple);
+ } else if ( fruitToTest.getId().equals( a.getId() ) ) {
+ assertTrue(fruitToTest instanceof Apple);
+ } else {
+ fail("Result does not contains the previously inserted elements");
+ }
+ }
+
+
protected Class[] getMappings() {
return new Class[] {
Building.class,
- House.class
+ House.class,
+ Fruit.class,
+ Apple.class,
+ Trash.class,
+ PaperTrash.class
};
}
}
|