|
From: <hib...@li...> - 2006-08-04 18:25:22
|
Author: ste...@jb...
Date: 2006-08-04 14:25:19 -0400 (Fri, 04 Aug 2006)
New Revision: 10220
Modified:
branches/Branch_3_2/Hibernate3/src/org/hibernate/persister/entity/JoinedSubclassEntityPersister.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/JoinedSubclassTest.java
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/Person.hbm.xml
branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/Person.java
Log:
HHH-1848 : locking on versioned joined subclasses
Modified: branches/Branch_3_2/Hibernate3/src/org/hibernate/persister/entity/JoinedSubclassEntityPersister.java
===================================================================
--- branches/Branch_3_2/Hibernate3/src/org/hibernate/persister/entity/JoinedSubclassEntityPersister.java 2006-08-04 18:24:33 UTC (rev 10219)
+++ branches/Branch_3_2/Hibernate3/src/org/hibernate/persister/entity/JoinedSubclassEntityPersister.java 2006-08-04 18:25:19 UTC (rev 10220)
@@ -219,7 +219,9 @@
jk--;
pc = pc.getSuperclass();
}
- if (jk!=-1) throw new AssertionFailure("Tablespan does not match height of joined-subclass hiearchy.");
+ if ( jk != -1 ) {
+ throw new AssertionFailure( "Tablespan does not match height of joined-subclass hiearchy." );
+ }
// PROPERTIES
@@ -452,7 +454,9 @@
private static int getTableId(String tableName, String[] tables) {
for ( int j=0; j<tables.length; j++ ) {
- if ( tableName.equals( tables[j] ) ) return j;
+ if ( tableName.equals( tables[j] ) ) {
+ return j;
+ }
}
throw new AssertionFailure("Table " + tableName + " not found");
}
@@ -554,7 +558,9 @@
public String getPropertyTableName(String propertyName) {
Integer index = getEntityMetamodel().getPropertyIndexOrNull(propertyName);
- if (index==null) return null;
+ if ( index == null ) {
+ return null;
+ }
return tableNames[ propertyTableNumbers[ index.intValue() ] ];
}
@@ -565,4 +571,8 @@
public String[][] getContraintOrderedTableKeyColumnClosure() {
return constraintOrderedKeyColumnNames;
}
+
+ public String getRootTableName() {
+ return naturalOrderTableNames[0];
+ }
}
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/JoinedSubclassTest.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/JoinedSubclassTest.java 2006-08-04 18:24:33 UTC (rev 10219)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/JoinedSubclassTest.java 2006-08-04 18:25:19 UTC (rev 10220)
@@ -11,6 +11,7 @@
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
+import org.hibernate.LockMode;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Property;
import org.hibernate.dialect.DB2Dialect;
@@ -141,6 +142,33 @@
s.close();
}
+ public void testLockingJoinedSubclass() {
+ Session s = openSession();
+ Transaction t = s.beginTransaction();
+ Person p = new Person();
+ p.setName("Emmanuel");
+ p.setSex('M');
+ s.persist(p);
+ Employee q = new Employee();
+ q.setName("Steve");
+ q.setSex('M');
+ q.setTitle("Mr");
+ q.setSalary( new BigDecimal(1000) );
+ s.persist(q);
+ t.commit();
+ s.close();
+
+ s = openSession();
+ t = s.beginTransaction();
+ s.lock( p, LockMode.UPGRADE );
+ s.lock( q, LockMode.UPGRADE );
+ s.delete( p );
+ s.delete( q );
+ t.commit();
+ s.close();
+
+ }
+
protected String[] getMappings() {
return new String[] { "joinedsubclass/Person.hbm.xml" };
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/Person.hbm.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/Person.hbm.xml 2006-08-04 18:24:33 UTC (rev 10219)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/Person.hbm.xml 2006-08-04 18:25:19 UTC (rev 10220)
@@ -26,8 +26,10 @@
unsaved-value="0">
<generator class="native"/>
</id>
-
- <property name="name"
+
+ <version name="version" column="version" type="int"/>
+
+ <property name="name"
not-null="true"
length="80"/>
<property name="sex"
Modified: branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/Person.java
===================================================================
--- branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/Person.java 2006-08-04 18:24:33 UTC (rev 10219)
+++ branches/Branch_3_2/Hibernate3/test/org/hibernate/test/joinedsubclass/Person.java 2006-08-04 18:25:19 UTC (rev 10220)
@@ -9,6 +9,7 @@
private long id;
private String name;
private char sex;
+ private int version;
private Address address = new Address();
/**
* @return Returns the address.
@@ -67,4 +68,11 @@
this.name = identity;
}
+ public int getVersion() {
+ return version;
+ }
+
+ public void setVersion(int version) {
+ this.version = version;
+ }
}
|