Author: epbernard
Date: 2006-04-25 09:05:16 -0400 (Tue, 25 Apr 2006)
New Revision: 9788
Added:
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/Shoe.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/Sneaker.java
Modified:
trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/Ejb3DiscriminatorColumn.java
trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java
trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/SingleTableTest.java
Log:
ANN-321 correct discriminator column lenght when defaults occurs
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/Ejb3DiscriminatorColumn.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/Ejb3DiscriminatorColumn.java 2006-04-25 02:10:52 UTC (rev 9787)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/Ejb3DiscriminatorColumn.java 2006-04-25 13:05:16 UTC (rev 9788)
@@ -19,6 +19,7 @@
private static final String DEFAULT_DISCRIMINATOR_TYPE = "string";
private String discriminatorTypeName;
+ private static final int DEFAULT_DISCRIMINATOR_LENGTH = 31;
public Ejb3DiscriminatorColumn() {
//discriminator default value
@@ -26,6 +27,7 @@
setLogicalColumnName( DEFAULT_DISCRIMINATOR_COLUMN_NAME );
setNullable( false );
setDiscriminatorTypeName( DEFAULT_DISCRIMINATOR_TYPE );
+ setLength( DEFAULT_DISCRIMINATOR_LENGTH );
}
public String getDiscriminatorTypeName() {
Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java 2006-04-25 02:10:52 UTC (rev 9787)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/EJB3OverridenAnnotationReader.java 2006-04-25 13:05:16 UTC (rev 9788)
@@ -60,6 +60,8 @@
import javax.persistence.Version;
import javax.persistence.Transient;
import javax.persistence.Embedded;
+import javax.persistence.ManyToOne;
+import javax.persistence.JoinTable;
import org.dom4j.Attribute;
import org.dom4j.Element;
@@ -306,6 +308,7 @@
getEmbedded( annotationList, defaults );
getBasic( annotationList, defaults );
getVersion( annotationList, defaults );
+ getManyToOne( annotationList, defaults );
}
this.annotations = annotationList.toArray( new Annotation[ annotationList.size() ] );
}
@@ -315,6 +318,24 @@
}
}
+ private void getManyToOne(List<Annotation> annotationList, XMLContext.Default defaults) {
+ for (Element element : elementsForProperty) {
+ if ( "embedded".equals( element.getName() ) ) {
+ AnnotationDescriptor ad = new AnnotationDescriptor( Embedded.class );
+ annotationList.add( AnnotationFactory.create( ad ) );
+ }
+ }
+ if ( elementsForProperty.size() == 0 ) {
+ Annotation annotation = super.getAnnotation( ManyToOne.class );
+ if (annotation != null) {
+ annotationList.add( annotation );
+ annotation = super.getAnnotation( JoinTable.class );
+ if (annotation != null) annotationList.add( annotation );
+ }
+
+ }
+ }
+
private void getEmbedded(List<Annotation> annotationList, XMLContext.Default defaults) {
for (Element element : elementsForProperty) {
if ( "embedded".equals( element.getName() ) ) {
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/Shoe.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/Shoe.java 2006-04-25 02:10:52 UTC (rev 9787)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/Shoe.java 2006-04-25 13:05:16 UTC (rev 9788)
@@ -0,0 +1,15 @@
+//$Id: $
+package org.hibernate.test.annotations.inheritance.singletable;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Entity;
+
+/**
+ * @author Emmanuel Bernard
+ */
+@Entity
+public class Shoe {
+ public Integer size;
+ @Id @GeneratedValue public Integer id;
+}
Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/SingleTableTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/SingleTableTest.java 2006-04-25 02:10:52 UTC (rev 9787)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/SingleTableTest.java 2006-04-25 13:05:16 UTC (rev 9788)
@@ -79,6 +79,31 @@
s.close();
}
+ public void testDefaultDiscriminatorColumn() {
+ Session s;
+ Transaction tx;
+ s = openSession();
+ tx = s.beginTransaction();
+ Shoe t = new Shoe();
+ Sneaker pt = new Sneaker();
+ s.persist(t);
+ s.persist(pt);
+ tx.commit();
+ s.close();
+
+ s = openSession();
+ tx = s.beginTransaction();
+ //correct behavior but the test fails on HSQLDB
+ //assertEquals( 0, s.createQuery( "select count(*) from Shoe f where f.class = :disc")
+ // .setString( "disc", "1234567890123456789012345678901" ).uniqueResult() );
+ List result = s.createCriteria(Shoe.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);
@@ -97,7 +122,9 @@
Fruit.class,
Apple.class,
Trash.class,
- PaperTrash.class
+ PaperTrash.class,
+ Sneaker.class,
+ Shoe.class
};
}
}
Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/Sneaker.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/Sneaker.java 2006-04-25 02:10:52 UTC (rev 9787)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/inheritance/singletable/Sneaker.java 2006-04-25 13:05:16 UTC (rev 9788)
@@ -0,0 +1,13 @@
+//$Id: $
+package org.hibernate.test.annotations.inheritance.singletable;
+
+import javax.persistence.Entity;
+import javax.persistence.DiscriminatorValue;
+
+/**
+ * @author Emmanuel Bernard
+ */
+@Entity
+@DiscriminatorValue("123456789012345678901234567890123")
+public class Sneaker extends Shoe {
+}
|