|
From: <one...@pr...> - 2002-11-18 11:43:33
|
Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/persister
In directory sc8-pr-cvs1:/tmp/cvs-serv27704/hibernate/persister
Modified Files:
MultiTableEntityPersister.java
Log Message:
fixed problem with class that declares no properties
Index: MultiTableEntityPersister.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/persister/MultiTableEntityPersister.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** MultiTableEntityPersister.java 16 Nov 2002 13:26:22 -0000 1.29
--- MultiTableEntityPersister.java 18 Nov 2002 11:43:30 -0000 1.30
***************
*** 25,29 ****
import java.sql.SQLException;
import java.util.ArrayList;
- import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
--- 25,28 ----
***************
*** 82,85 ****
--- 81,85 ----
private transient final int[] propertyColumnSpans;
private transient final int[] propertyTables;
+ private transient final boolean[] hasColumns;
private transient final String[][] propertyColumnNames;
private transient final String[][] propertyColumnNameAliases;
***************
*** 97,101 ****
private transient final Type[] subclassPropertyTypeClosure;
private transient final Class[] subclassClosure;
- private transient final boolean hasColumns;
private transient final HashMap tableNumberByPropertyPath = new HashMap();
--- 97,100 ----
***************
*** 462,465 ****
--- 461,465 ----
String[] result = new String[ tableNames.length ];
for ( int j=0; j<tableNames.length; j++ ) {
+ boolean hasColumns = false;
StringBuffer setters = new StringBuffer(20);
for (int i=0; i<propertyColumnNames.length; i++) {
***************
*** 467,487 ****
for ( int k=0; k<propertyColumnNames[i].length; k++ )
setters.append( propertyColumnNames[i][k] ).append(" = ?, ");
}
}
! setters.setLength( setters.length()-2 ); //trim last comma
! StringBuffer buf = new StringBuffer(100)
! .append("update ")
! .append( tableNames[j] )
! .append(" set ")
! .append( setters.toString() )
! .append(" where ")
! .append( StringHelper.join( " = ? and ", tableKeyColumns[j] ) ) //TODO:refactor out copied code
! .append(" = ?");
! if ( isVersioned() && j==0 ) {
! buf.append(" and ")
! .append(versionColumnName)
! .append(" = ?");
}
- result[j] = buf.toString();
}
return result;
--- 467,493 ----
for ( int k=0; k<propertyColumnNames[i].length; k++ )
setters.append( propertyColumnNames[i][k] ).append(" = ?, ");
+ hasColumns = true;
}
}
! if (!hasColumns) {
! result[j]=null;
! }
! else {
! setters.setLength( setters.length()-2 ); //trim last comma
! StringBuffer buf = new StringBuffer(100)
! .append("update ")
! .append( tableNames[j] )
! .append(" set ")
! .append( setters.toString() )
! .append(" where ")
! .append( StringHelper.join( " = ? and ", tableKeyColumns[j] ) ) //TODO:refactor out copied code
! .append(" = ?");
! if ( isVersioned() && j==0 ) {
! buf.append(" and ")
! .append(versionColumnName)
! .append(" = ?");
! }
! result[j] = buf.toString();
}
}
return result;
***************
*** 757,769 ****
public void update(Serializable id, Object[] fields, int[] dirtyFields, Object oldVersion, Object object, SessionImplementor session) throws SQLException, HibernateException {
- if (!hasColumns) return; // for objects that came in via update()
-
int tables = tableNames.length;
! boolean[] tableUpdateNeeded = new boolean[tables];
if (dirtyFields==null) {
! Arrays.fill(tableUpdateNeeded, true); // for objects that came in via update()
}
else {
for ( int i=0; i<dirtyFields.length; i++ ) {
tableUpdateNeeded[ propertyTables[ dirtyFields[i] ] ] = true;
--- 763,774 ----
public void update(Serializable id, Object[] fields, int[] dirtyFields, Object oldVersion, Object object, SessionImplementor session) throws SQLException, HibernateException {
int tables = tableNames.length;
! boolean[] tableUpdateNeeded;
if (dirtyFields==null) {
! tableUpdateNeeded = hasColumns; // for objects that came in via update()
}
else {
+ tableUpdateNeeded = new boolean[tables];
for ( int i=0; i<dirtyFields.length; i++ ) {
tableUpdateNeeded[ propertyTables[ dirtyFields[i] ] ] = true;
***************
*** 1126,1130 ****
}
! hasColumns = columnNames.length!=0;
}
--- 1131,1138 ----
}
! hasColumns = new boolean[updateStrings.length];
! for ( int m=0; m<updateStrings.length; m++ ) {
! hasColumns[m] = updateStrings[m]!=null;
! }
}
|