Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister
In directory sc8-pr-cvs1:/tmp/cvs-serv26833/persister
Modified Files:
NormalizedEntityPersister.java
Log Message:
* reworked CompositeUserType
* improved some exception handling
Index: NormalizedEntityPersister.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/NormalizedEntityPersister.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** NormalizedEntityPersister.java 6 Apr 2003 02:28:57 -0000 1.16
--- NormalizedEntityPersister.java 6 Apr 2003 10:11:10 -0000 1.17
***************
*** 960,963 ****
--- 960,973 ----
public String[] toColumns(String alias, String property) throws QueryException {
+ if ( PathExpressionParser.ENTITY_CLASS.equals(property) ) {
+ // This doesn't actually seem to work but it *might*
+ // work on some dbs. Also it doesn't work if there
+ // are multiple columns of results because it
+ // is not accounting for the suffix.
+ // return new String[] { getDiscriminatorColumnName() };
+
+ return new String[] { discriminatorFragment(alias).toFragmentString() };
+ }
+
String[] cols = getPropertyColumnNames(property);
if (cols==null) throw new QueryException("unresolved property: " + property);
***************
*** 998,1018 ****
if ( hasSubclasses() ) {
!
! CaseFragment cases = dialect.createCaseFragment()
! .setReturnColumnName( getDiscriminatorColumnName(), suffix );
!
! for ( int i=0; i< discriminators.length; i++ ) {
! cases.addWhenColumnNotNull(
! alias( alias, tableNumbers[i] ),
! notNullColumns[i],
! discriminators[i]
! );
! }
!
! return ", " + cases.toFragmentString() + frag.toFragmentString();
}
else {
return frag.toFragmentString();
}
}
--- 1008,1034 ----
if ( hasSubclasses() ) {
! return ", " +
! discriminatorFragment(alias)
! .setReturnColumnName( getDiscriminatorColumnName(), suffix )
! .toFragmentString() +
! frag.toFragmentString();
}
else {
return frag.toFragmentString();
}
+ }
+
+ private CaseFragment discriminatorFragment(String alias) {
+ CaseFragment cases = dialect.createCaseFragment();
+
+ for ( int i=0; i< discriminators.length; i++ ) {
+ cases.addWhenColumnNotNull(
+ alias( alias, tableNumbers[i] ),
+ notNullColumns[i],
+ discriminators[i]
+ );
+ }
+
+ return cases;
}
|