From: <one...@us...> - 2003-04-06 10:11:43
|
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; } |