[hibernate-commits] Hibernate SVN: r10349 - in trunk/HibernateExt/metadata/src: java/org/hibernate/annotations java/org/hibernate/cfg java/org/hibernate/cfg/annotations java/org/hibernate/validator test/org/hibernate/test/annotations/indexcoll test/org/hibernate/test/annotations/manytomany

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Aug 25 18:11:44 EDT 2006


Author: epbernard
Date: 2006-08-25 18:11:42 -0400 (Fri, 25 Aug 2006)
New Revision: 10349

Added:
   trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/Building.java
   trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/BuildingCompany.java
   trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/Company.java
Modified:
   trunk/HibernateExt/metadata/src/java/org/hibernate/annotations/FlushModeType.java
   trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/BinderHelper.java
   trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/OneToOneSecondPass.java
   trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/CollectionBinder.java
   trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/QueryBinder.java
   trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java
   trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Atmosphere.java
   trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/ManyToManyTest.java
Log:
add MANUAL to flush mode type
Various additional tests

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/annotations/FlushModeType.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/annotations/FlushModeType.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/annotations/FlushModeType.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -21,6 +21,11 @@
 	COMMIT,
 	/**
 	 * see {@link org.hibernate.FlushMode.NEVER}
+	 * @deprecated use MANUAL, will be removed in a subsequent release
 	 */
-	NEVER
+	NEVER,
+	/**
+	 * see {@link org.hibernate.FlushMode.MANUAL}
+	 */
+	MANUAL
 }
\ No newline at end of file

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/BinderHelper.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/BinderHelper.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/BinderHelper.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -255,13 +255,17 @@
 		return orderedProperties;
 	}
 
+	/**
+	 * Retrieve the property by path in a recursive way, including IndetifierProperty in the loop
+	 * If propertyName is null or empty, the IdentifierProperty is returned
+	 */
 	public static Property findPropertyByName(PersistentClass associatedClass, String propertyName) {
 		Property property = null;
 		Property idProperty = associatedClass.getIdentifierProperty();
 		String idName = idProperty != null ? idProperty.getName() : null;
 		try {
 			if ( propertyName == null
-					|| propertyName.equals( "" )
+					|| propertyName.length() == 0
 					|| propertyName.equals( idName ) ) {
 				//default to id
 				property = idProperty;

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/OneToOneSecondPass.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/OneToOneSecondPass.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/OneToOneSecondPass.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -123,7 +123,7 @@
 				if ( otherSide == null ) {
 					throw new MappingException( "Unable to find entity: " + value.getReferencedEntityName() );
 				}
-				otherSideProperty = otherSide.getRecursiveProperty( mappedBy );
+				otherSideProperty = BinderHelper.findPropertyByName( otherSide, mappedBy );
 			}
 			catch (MappingException e) {
 				throw new AnnotationException(

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/CollectionBinder.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/CollectionBinder.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/CollectionBinder.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -730,7 +730,7 @@
 			List<String> properties = new ArrayList<String>();
 			List<String> ordering = new ArrayList<String>();
 			StringBuilder orderByBuffer = new StringBuilder();
-			if ( "".equals( hqlOrderBy ) ) {
+			if ( hqlOrderBy != null && hqlOrderBy.length() == 0 ) {
 				//TODO : Check that. Maybe order by key for maps
 			}
 			else {

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/QueryBinder.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/QueryBinder.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/QueryBinder.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -248,6 +248,9 @@
 			case NEVER:
 				flushMode = FlushMode.MANUAL;
 				break;
+			case MANUAL:
+				flushMode = FlushMode.MANUAL;
+				break;
 			default:
 				throw new AssertionFailure( "Unknown flushModeType: " + flushModeType );
 		}

Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java
===================================================================
--- trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -29,6 +29,7 @@
 import org.hibernate.Hibernate;
 import org.hibernate.MappingException;
 import org.hibernate.cfg.annotations.Version;
+import org.hibernate.cfg.BinderHelper;
 import org.hibernate.mapping.PersistentClass;
 import org.hibernate.mapping.Property;
 import org.hibernate.reflection.Filter;
@@ -563,10 +564,7 @@
 			String propertyName = getPropertyName( getters.next() );
 			if ( validator instanceof PropertyConstraint ) {
 				try {
-					Property property = persistentClass.getIdentifierProperty();
-					if ( property == null || ! propertyName.equals( property.getName() ) ) {
-						property = persistentClass.getProperty( propertyName );
-					}
+					Property property = BinderHelper.findPropertyByName(persistentClass, propertyName);
 					( (PropertyConstraint) validator ).apply( property );
 				}
 				catch (MappingException pnfe) {

Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Atmosphere.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Atmosphere.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/indexcoll/Atmosphere.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -30,6 +30,7 @@
 	public Map<String, Gas> gases = new HashMap<String, Gas>();
 
 	@ManyToMany(cascade = CascadeType.ALL)
+	@MapKeyManyToMany(joinColumns = @JoinColumn(name="gas_id") )
 	@JoinTable(name = "Gas_per_key")
 	public Map<GasKey, Gas> gasesPerKey = new HashMap<GasKey, Gas>();
 

Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/Building.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/Building.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/Building.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -0,0 +1,35 @@
+//$Id: $
+package org.hibernate.test.annotations.manytomany;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class Building {
+	@Id @GeneratedValue private Long id;
+
+	@ManyToOne @JoinColumn(name="company_id", referencedColumnName = "name")
+	private BuildingCompany company;
+
+	public BuildingCompany getCompany() {
+		return company;
+	}
+
+	public void setCompany(BuildingCompany company) {
+		this.company = company;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+}

Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/BuildingCompany.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/BuildingCompany.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/BuildingCompany.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -0,0 +1,29 @@
+//$Id: $
+package org.hibernate.test.annotations.manytomany;
+
+import java.util.Date;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.GeneratedValue;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class BuildingCompany extends Company {
+	@Id @GeneratedValue private Long id;
+	private Date foundedIn;
+
+	public Date getFoundedIn() {
+		return foundedIn;
+	}
+
+	public void setFoundedIn(Date foundedIn) {
+		this.foundedIn = foundedIn;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+}

Added: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/Company.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/Company.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/Company.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -0,0 +1,22 @@
+//$Id: $
+package org.hibernate.test.annotations.manytomany;
+
+import java.io.Serializable;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Column;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at MappedSuperclass
+public class Company implements Serializable {
+	@Column(unique = true) private String name;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}

Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/ManyToManyTest.java
===================================================================
--- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/ManyToManyTest.java	2006-08-25 00:14:35 UTC (rev 10348)
+++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/ManyToManyTest.java	2006-08-25 22:11:42 UTC (rev 10349)
@@ -484,6 +484,24 @@
 		s.close();
 	}
 
+	public void testReferencedColumnNameToSuperclass() throws Exception {
+		Session s = openSession();
+		Transaction tx = s.beginTransaction();
+		BuildingCompany comp = new BuildingCompany();
+		comp.setFoundedIn( new Date() );
+		comp.setName( "Builder century corp.");
+		s.persist( comp );
+		Building building = new Building();
+		building.setCompany( comp );
+		s.persist( building );
+		s.flush();
+		s.clear();
+		building = (Building) s.get( Building.class, building.getId() );
+		assertEquals( comp.getName(), building.getCompany().getName() );
+		tx.rollback();
+		s.close();
+	}
+
 	/**
 	 * @see org.hibernate.test.annotations.TestCase#getMappings()
 	 */
@@ -503,7 +521,9 @@
 				Permission.class,
 				Zone.class,
 				Inspector.class,
-				InspectorPrefixes.class
+				InspectorPrefixes.class,
+				BuildingCompany.class,
+				Building.class
 
 		};
 	}




More information about the hibernate-commits mailing list