You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(22) |
Nov
(308) |
Dec
(131) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(369) |
Feb
(171) |
Mar
(236) |
Apr
(187) |
May
(218) |
Jun
(217) |
Jul
(127) |
Aug
(448) |
Sep
(270) |
Oct
(231) |
Nov
(422) |
Dec
(255) |
2004 |
Jan
(111) |
Feb
(73) |
Mar
(338) |
Apr
(351) |
May
(349) |
Jun
(495) |
Jul
(394) |
Aug
(1048) |
Sep
(499) |
Oct
(142) |
Nov
(269) |
Dec
(638) |
2005 |
Jan
(825) |
Feb
(1272) |
Mar
(593) |
Apr
(690) |
May
(950) |
Jun
(958) |
Jul
(767) |
Aug
(839) |
Sep
(525) |
Oct
(449) |
Nov
(585) |
Dec
(455) |
2006 |
Jan
(603) |
Feb
(656) |
Mar
(195) |
Apr
(114) |
May
(136) |
Jun
(100) |
Jul
(128) |
Aug
(68) |
Sep
(7) |
Oct
(1) |
Nov
(1) |
Dec
(8) |
2007 |
Jan
(4) |
Feb
(3) |
Mar
(8) |
Apr
(16) |
May
(5) |
Jun
(4) |
Jul
(6) |
Aug
(23) |
Sep
(15) |
Oct
(5) |
Nov
(7) |
Dec
(5) |
2008 |
Jan
(5) |
Feb
(1) |
Mar
(1) |
Apr
(5) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(2) |
2013 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <hib...@li...> - 2006-03-02 03:13:37
|
Author: ste...@jb... Date: 2006-03-01 22:13:33 -0500 (Wed, 01 Mar 2006) New Revision: 9530 Modified: trunk/Hibernate3/src/org/hibernate/hql/ast/tree/FromElementFactory.java trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java trunk/Hibernate3/test/org/hibernate/test/hql/HQLTest.java Log: HHH-1248 : explicit joins to collections in subquery result in join conditions being dropped from sql Modified: trunk/Hibernate3/src/org/hibernate/hql/ast/tree/FromElementFactory.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/hql/ast/tree/FromElementFactory.java 2006-03-01 17:44:27 UTC (rev 9529) +++ trunk/Hibernate3/src/org/hibernate/hql/ast/tree/FromElementFactory.java 2006-03-02 03:13:33 UTC (rev 9530) @@ -16,6 +16,7 @@ import org.hibernate.type.CollectionType; import org.hibernate.type.EntityType; import org.hibernate.type.Type; +import org.hibernate.util.StringHelper; import antlr.ASTFactory; import antlr.SemanticException; @@ -182,12 +183,15 @@ collectionType = queryableCollection.getCollectionType(); String roleAlias = fromClause.getAliasGenerator().createName( role ); - // Subqueries create 'special' implied from nodes - // because correlated subselects can't use an - // ANSI-style join + // Correlated subqueries create 'special' implied from nodes + // because correlated subselects can't use an ANSI-style join boolean explicitSubqueryFromElement = fromClause.isSubQuery() && !implied; if ( explicitSubqueryFromElement ) { - implied = true; + String pathRoot = StringHelper.root( path ); + FromElement origin = fromClause.getFromElement( pathRoot ); + if ( origin == null || origin.getFromClause() != fromClause ) { + implied = true; + } } Type elementType = queryableCollection.getElementType(); Modified: trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java 2006-03-01 17:44:27 UTC (rev 9529) +++ trunk/Hibernate3/test/org/hibernate/test/hql/ASTParserLoadingTest.java 2006-03-02 03:13:33 UTC (rev 9530) @@ -68,6 +68,50 @@ }; } + public void testCollectionJoinsInSubselect() { + // HHH-1248 : initially FromElementFactory treated any explicit join + // as an implied join so that theta-style joins would always be used. + // This was because correlated subqueries cannot use ANSI-style joins + // for the correlation. However, this special treatment was not limited + // to only correlated subqueries; it was applied to any subqueries -> + // which in-and-of-itself is not necessarily bad. But somewhere later + // the choices made there caused joins to be dropped. + Session s = openSession(); + String qryString = + "select a.id, a.description" + + " from Animal a" + + " left join a.offspring" + + " where a in (" + + " select a1 from Animal a1" + + " left join a1.offspring o" + + " where a1.id=1" + + ")"; + s.createQuery( qryString ).list(); + qryString = + "select h.id, h.description" + + " from Human h" + + " left join h.friends" + + " where h in (" + + " select h1" + + " from Human h1" + + " left join h1.friends f" + + " where h1.id=1" + + ")"; + s.createQuery( qryString ).list(); + qryString = + "select h.id, h.description" + + " from Human h" + + " left join h.friends f" + + " where f in (" + + " select h1" + + " from Human h1" + + " left join h1.friends f1" + + " where h = f1" + + ")"; + s.createQuery( qryString ).list(); + s.close(); + } + public void testCollectionFetchWithDistinctionAndLimit() { // create some test data... Session s = openSession(); Modified: trunk/Hibernate3/test/org/hibernate/test/hql/HQLTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/hql/HQLTest.java 2006-03-01 17:44:27 UTC (rev 9529) +++ trunk/Hibernate3/test/org/hibernate/test/hql/HQLTest.java 2006-03-02 03:13:33 UTC (rev 9530) @@ -53,7 +53,7 @@ assertTranslation( "select h from Human as h join fetch h.nickNames" ); } - public void testCollectionJoinsInSubselectFailureExpected() { + public void testCollectionJoinsInSubselect() { // caused by some goofiness in FromElementFactory that tries to // handle correlated subqueries (but fails miserably) even though this // is not a correlated subquery. HHH-1248 @@ -67,6 +67,17 @@ " where a1.id=1" + ")" ); + assertTranslation( + "select h.id, h.description" + + " from Human h" + + " left join h.friends" + + " where h in (" + + " select h1" + + " from Human h1" + + " left join h1.friends f" + + " where h1.id=1" + + ")" + ); } public void testEmptyInListFailureExpected() { |
From: <hib...@li...> - 2006-03-01 17:45:15
|
Author: epbernard Date: 2006-03-01 12:44:27 -0500 (Wed, 01 Mar 2006) New Revision: 9529 Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/DeleteOrphanTest.java trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Soldier.java trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Troop.java Log: Better test of delete orphan and merge Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/DeleteOrphanTest.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/DeleteOrphanTest.java 2006-03-01 04:24:08 UTC (rev 9528) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/DeleteOrphanTest.java 2006-03-01 17:44:27 UTC (rev 9529) @@ -1,9 +1,16 @@ //$Id$ package org.hibernate.ejb.test.cascade; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutput; +import java.io.ObjectOutputStream; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; +import org.hibernate.Hibernate; import org.hibernate.ejb.test.TestCase; /** @@ -30,8 +37,18 @@ tx = em.getTransaction(); tx.begin(); Troop troop = em.find( Troop.class, disney.getId() ); + Hibernate.initialize( troop.getSoldiers() ); + tx.commit(); + em.close(); + Soldier soldier = troop.getSoldiers().iterator().next(); troop.getSoldiers().remove( soldier ); + troop = (Troop) unserialize( serialize( troop ) ); + + em = factory.createEntityManager(); + tx = em.getTransaction(); + tx.begin(); + em.merge(troop); tx.commit(); em.close(); @@ -41,7 +58,6 @@ soldier = em.find( Soldier.class, mickey.getId() ); assertNull( "delete-orphan should work", soldier ); troop = em.find( Troop.class, disney.getId() ); - //Fails because of HHH-1187 em.remove( troop ); tx.commit(); em.close(); @@ -53,4 +69,23 @@ Soldier.class }; } + + private byte[] serialize(Object object) throws IOException { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + ObjectOutput out = new ObjectOutputStream( stream ); + out.writeObject( object ); + out.close(); + byte[] serialized = stream.toByteArray(); + stream.close(); + return serialized; + } + + private Object unserialize(byte[] serialized) throws IOException, ClassNotFoundException { + ByteArrayInputStream byteIn = new ByteArrayInputStream( serialized ); + ObjectInputStream in = new ObjectInputStream(byteIn); + Object result = in.readObject(); + in.close(); + byteIn.close(); + return result; + } } Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Soldier.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Soldier.java 2006-03-01 04:24:08 UTC (rev 9528) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Soldier.java 2006-03-01 17:44:27 UTC (rev 9529) @@ -1,6 +1,7 @@ //$Id$ package org.hibernate.ejb.test.cascade; +import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -13,7 +14,7 @@ * @author Emmanuel Bernard */ @Entity -public class Soldier { +public class Soldier implements Serializable { private Integer id; private String name; private Troop troop; Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Troop.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Troop.java 2006-03-01 04:24:08 UTC (rev 9528) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/cascade/Troop.java 2006-03-01 17:44:27 UTC (rev 9529) @@ -3,6 +3,7 @@ import java.util.HashSet; import java.util.Set; +import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -16,7 +17,7 @@ * @author Emmanuel Bernard */ @Entity -public class Troop { +public class Troop implements Serializable { private Integer id; private String name; private Set<Soldier> soldiers; |
Author: ste...@jb... Date: 2006-02-28 23:24:08 -0500 (Tue, 28 Feb 2006) New Revision: 9528 Added: branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/NodeTraverser.java branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/WithClauseTest.java Removed: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/AdHocOnTest.java Modified: branches/Branch_3_1/Hibernate3/src/org/hibernate/engine/JoinSequence.java branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/HqlSqlWalker.java branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/tree/FromElement.java branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/ASTUtil.java branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/JoinProcessor.java branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/HQLSuite.java Log: HHH-1433 plus other hql-with-clause improvements backported from 3.2 Modified: branches/Branch_3_1/Hibernate3/src/org/hibernate/engine/JoinSequence.java =================================================================== --- branches/Branch_3_1/Hibernate3/src/org/hibernate/engine/JoinSequence.java 2006-03-01 03:49:49 UTC (rev 9527) +++ branches/Branch_3_1/Hibernate3/src/org/hibernate/engine/JoinSequence.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -165,7 +165,9 @@ else { condition = on; } - if ( extraOnClause != null ) { + if ( extraOnClause != null && !isManyToManyRoot( join.getJoinable() ) ) { + // the isManyToManyRoot() check ensures we apply the extra on clause only to + // the target table in the case of a many-to-many join condition += " and " + extraOnClause; } joinFragment.addJoin( Modified: branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/HqlSqlWalker.java =================================================================== --- branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/HqlSqlWalker.java 2006-03-01 03:49:49 UTC (rev 9527) +++ branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/HqlSqlWalker.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -14,6 +14,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.QueryException; +import org.hibernate.HibernateException; import org.hibernate.engine.JoinSequence; import org.hibernate.engine.ParameterBinder; import org.hibernate.engine.SessionFactoryImplementor; @@ -51,6 +52,7 @@ import org.hibernate.hql.ast.util.LiteralProcessor; import org.hibernate.hql.ast.util.SessionFactoryHelper; import org.hibernate.hql.ast.util.SyntheticAndFactory; +import org.hibernate.hql.ast.util.NodeTraverser; import org.hibernate.id.IdentifierGenerator; import org.hibernate.id.PostInsertIdentifierGenerator; import org.hibernate.id.SequenceGenerator; @@ -331,15 +333,78 @@ try { withClause( hqlWithNode ); AST hqlSqlWithNode = returnAST; + if ( log.isDebugEnabled() ) { + log.debug( "handleWithFragment() : " + getASTPrinter().showAsString( hqlSqlWithNode, "-- with clause --" ) ); + } + WithClauseVisitor visitor = new WithClauseVisitor(); + NodeTraverser traverser = new NodeTraverser( visitor ); + traverser.traverseDepthFirst( hqlSqlWithNode ); + FromElement referencedFromElement = visitor.getReferencedFromElement(); + if ( referencedFromElement != fromElement ) { + throw new SemanticException( "with-clause expressions did not reference from-clause element to which the with-clause was associated" ); + } SqlGenerator sql = new SqlGenerator( getSessionFactoryHelper().getFactory() ); sql.whereExpr( hqlSqlWithNode.getFirstChild() ); - fromElement.setAdHocOnClauseFragment( "(" + sql.getSQL() + ")" ); + fromElement.setWithClauseFragment( "(" + sql.getSQL() + ")" ); } catch ( Exception e) { throw new SemanticException( e.getMessage() ); } } + private static class WithClauseVisitor implements NodeTraverser.VisitationStrategy { + private FromElement referencedFromElement; + private String joinAlias; + + public void visit(AST node) { + // todo : currently expects that the individual with expressions apply to the same sql table join. + // This may not be the case for joined-subclass where the property values + // might be coming from different tables in the joined hierarchy. At some + // point we should expand this to support that capability. However, that has + // some difficulties: + // 1) the biggest is how to handle ORs when the individual comparisons are + // linked to different sql joins. + // 2) here we would need to track each comparison individually, along with + // the join alias to which it applies and then pass that information + // back to the FromElement so it can pass it along to the JoinSequence + + if ( node instanceof DotNode ) { + DotNode dotNode = ( DotNode ) node; + FromElement fromElement = dotNode.getFromElement(); + if ( referencedFromElement != null ) { + if ( fromElement != referencedFromElement ) { + throw new HibernateException( "with-clause referenced two different from-clause elements" ); + } + } + else { + referencedFromElement = fromElement; + joinAlias = extractAppliedAlias( dotNode ); + // todo : temporary + // needed because currently persister is the one that + // creates and renders the join fragments for inheritence + // hierarchies... + if ( !joinAlias.equals( referencedFromElement.getTableAlias() ) ) { + throw new HibernateException( "with clause can only reference columns in the driving table" ); + } + } + } + } + + private String extractAppliedAlias(DotNode dotNode) { + return dotNode.getText().substring( 0, dotNode.getText().indexOf( '.' ) ); + } + + public FromElement getReferencedFromElement() { + return referencedFromElement; + } + + public String getJoinAlias() { + // later, can be used to help resolve HHH-1521 + // also see "driving table" exception above + return joinAlias; + } + } + /** * Sets the current 'FROM' context. * Modified: branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/tree/FromElement.java =================================================================== --- branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/tree/FromElement.java 2006-03-01 03:49:49 UTC (rev 9527) +++ branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/tree/FromElement.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -58,7 +58,7 @@ private boolean useWhereFragment = true; private List destinations = new LinkedList(); private boolean manyToMany = false; - private String adHocOnClauseFragment = null; + private String withClauseFragment = null; public FromElement() { } @@ -478,12 +478,12 @@ isAllPropertyFetch = fetch; } - public String getAdHocOnClauseFragment() { - return adHocOnClauseFragment; + public String getWithClauseFragment() { + return withClauseFragment; } - public void setAdHocOnClauseFragment(String adHocOnClauseFragment) { - this.adHocOnClauseFragment = adHocOnClauseFragment; + public void setWithClauseFragment(String withClauseFragment) { + this.withClauseFragment = withClauseFragment; } public boolean hasCacheablePersister() { Modified: branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/ASTUtil.java =================================================================== --- branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/ASTUtil.java 2006-03-01 03:49:49 UTC (rev 9527) +++ branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/ASTUtil.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -273,18 +273,31 @@ } public static List collectChildren(AST root, FilterPredicate predicate) { - List children = new ArrayList(); - collectChildren( children, root, predicate ); - return children; + return new CollectingNodeVisitor( predicate ).collect( root ); } - private static void collectChildren(List children, AST root, FilterPredicate predicate) { - for ( AST n = root.getFirstChild(); n != null; n = n.getNextSibling() ) { - if ( predicate == null || !predicate.exclude( n ) ) { - children.add( n ); + private static class CollectingNodeVisitor implements NodeTraverser.VisitationStrategy { + private final FilterPredicate predicate; + private final List collectedNodes = new ArrayList(); + + public CollectingNodeVisitor(FilterPredicate predicate) { + this.predicate = predicate; + } + + public void visit(AST node) { + if ( predicate == null || !predicate.exclude( node ) ) { + collectedNodes.add( node ); } - collectChildren( children, n, predicate ); } + + public List getCollectedNodes() { + return collectedNodes; + } + + public List collect(AST root) { + NodeTraverser traverser = new NodeTraverser( this ); + traverser.traverseDepthFirst( root ); + return collectedNodes; + } } - } Modified: branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/JoinProcessor.java =================================================================== --- branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/JoinProcessor.java 2006-03-01 03:49:49 UTC (rev 9527) +++ branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/JoinProcessor.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -107,7 +107,7 @@ JoinFragment joinFragment = join.toJoinFragment( inSubquery ? Collections.EMPTY_MAP : queryTranslatorImpl.getEnabledFilters(), fromElement.useFromFragment(), - fromElement.getAdHocOnClauseFragment() + fromElement.getWithClauseFragment() ); String frag = joinFragment.toFromFragmentString(); Added: branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/NodeTraverser.java =================================================================== --- branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/NodeTraverser.java 2006-03-01 03:49:49 UTC (rev 9527) +++ branches/Branch_3_1/Hibernate3/src/org/hibernate/hql/ast/util/NodeTraverser.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -0,0 +1,44 @@ +package org.hibernate.hql.ast.util; + +import antlr.collections.AST; + +/** + * A visitor for traversing an AST tree. + * + * @author Steve Ebersole + */ +public class NodeTraverser { + public static interface VisitationStrategy { + public void visit(AST node); + } + + private final VisitationStrategy strategy; + + public NodeTraverser(VisitationStrategy strategy) { + this.strategy = strategy; + } + + /** + * Traverse the AST tree depth first. + * <p/> + * Note that the AST passed in is not visited itself. Visitation starts + * with its children. + * + * @param ast + */ + public void traverseDepthFirst(AST ast) { + if ( ast == null ) { + throw new IllegalArgumentException( "node to traverse cannot be null!" ); + } + visitDepthFirst( ast.getFirstChild() ); + } + + private void visitDepthFirst(AST ast) { + if ( ast == null ) { + return; + } + strategy.visit( ast ); + visitDepthFirst( ast.getFirstChild() ); + visitDepthFirst( ast.getNextSibling() ); + } +} Deleted: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/AdHocOnTest.java =================================================================== --- branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/AdHocOnTest.java 2006-03-01 03:49:49 UTC (rev 9527) +++ branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/AdHocOnTest.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -1,129 +0,0 @@ -// $Id$ -package org.hibernate.test.hql; - -import org.hibernate.test.TestCase; -import org.hibernate.Session; -import org.hibernate.Transaction; -import org.hibernate.HibernateException; - -import java.util.List; - -import junit.framework.Test; -import junit.framework.TestSuite; - -/** - * Implementation of AdHocOnTest. - * - * @author Steve Ebersole - */ -public class AdHocOnTest extends TestCase { - - public AdHocOnTest(String name) { - super( name ); - } - - protected String[] getMappings() { - return new String[] { "hql/Animal.hbm.xml" }; - } - - public static Test suite() { - return new TestSuite( AdHocOnTest.class ); - } - - public void testAdHocOnFailsWithFetch() { - TestData data = new TestData(); - data.prepare(); - - Session s = openSession(); - Transaction txn = s.beginTransaction(); - - try { - s.createQuery( "from Animal a inner join fetch a.offspring as o with o.bodyWeight = :someLimit" ) - .setDouble( "someLimit", 1 ) - .list(); - fail( "ad-hoc on clause allowed with fetched association" ); - } - catch ( HibernateException e ) { - System.out.println( "TEST (OK) : " + e.getMessage() ); - // the expected response... - } - - txn.commit(); - s.close(); - - data.cleanup(); - } - - public void testAdHocOn() { - TestData data = new TestData(); - data.prepare(); - - Session s = openSession(); - Transaction txn = s.beginTransaction(); - - List list = s.createQuery( "from Animal a inner join a.offspring as o with o.bodyWeight < :someLimit" ) - .setDouble( "someLimit", 1 ) - .list(); - assertTrue( "ad-hoc on did not take effect", list.isEmpty() ); - - list = s.createQuery( "from Animal a inner join a.mother as m with m.bodyWeight < :someLimit" ) - .setDouble( "someLimit", 1 ) - .list(); - assertTrue( "ad-hoc on did not take effect", list.isEmpty() ); - - txn.commit(); - s.close(); - - data.cleanup(); - } - - private class TestData { - public void prepare() { - Session session = openSession(); - Transaction txn = session.beginTransaction(); - - Animal mother = new Animal(); - mother.setBodyWeight( 10 ); - mother.setDescription( "mother" ); - - Animal father = new Animal(); - father.setBodyWeight( 15 ); - father.setDescription( "father" ); - - Animal child1 = new Animal(); - child1.setBodyWeight( 5 ); - child1.setDescription( "child1" ); - - Animal child2 = new Animal(); - child2.setBodyWeight( 6 ); - child2.setDescription( "child2" ); - - child1.setMother( mother ); - child1.setFather( father ); - mother.addOffspring( child1 ); - father.addOffspring( child1 ); - - child2.setMother( mother ); - child2.setFather( father ); - mother.addOffspring( child2 ); - father.addOffspring( child2 ); - - session.save( mother ); - session.save( father ); - session.save( child1 ); - session.save( child2 ); - - txn.commit(); - session.close(); - } - - public void cleanup() { - Session session = openSession(); - Transaction txn = session.beginTransaction(); - session.createQuery( "delete Animal where mother is not null" ).executeUpdate(); - session.createQuery( "delete Animal" ).executeUpdate(); - txn.commit(); - session.close(); - } - } -} Modified: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/HQLSuite.java =================================================================== --- branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/HQLSuite.java 2006-03-01 03:49:49 UTC (rev 9527) +++ branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/HQLSuite.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -16,7 +16,7 @@ suite.addTest( HQLTest.suite() ); suite.addTest( ASTParserLoadingTest.suite() ); suite.addTest( BulkManipulationTest.suite() ); - suite.addTest( AdHocOnTest.suite() ); + suite.addTest( WithClauseTest.suite() ); // suite.addTest( ASTQueryTranslatorTest.suite() ); suite.addTest( EJBQLTest.suite() ); suite.addTest( HqlParserTest.suite() ); Copied: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/WithClauseTest.java (from rev 9520, branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/AdHocOnTest.java) =================================================================== --- branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/AdHocOnTest.java 2006-02-28 17:59:02 UTC (rev 9520) +++ branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/WithClauseTest.java 2006-03-01 04:24:08 UTC (rev 9528) @@ -0,0 +1,199 @@ +// $Id$ +package org.hibernate.test.hql; + +import org.hibernate.test.TestCase; +import org.hibernate.Session; +import org.hibernate.Transaction; +import org.hibernate.HibernateException; +import org.hibernate.QueryException; + +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; + +import junit.framework.Test; +import junit.framework.TestSuite; + +/** + * Implementation of WithClauseTest. + * + * @author Steve Ebersole + */ +public class WithClauseTest extends TestCase { + + public WithClauseTest(String name) { + super( name ); + } + + protected String[] getMappings() { + return new String[] { "hql/Animal.hbm.xml" }; + } + + public static Test suite() { + return new TestSuite( WithClauseTest.class ); + } + + public void testWithClauseFailsWithFetch() { + TestData data = new TestData(); + data.prepare(); + + Session s = openSession(); + Transaction txn = s.beginTransaction(); + + try { + s.createQuery( "from Animal a inner join fetch a.offspring as o with o.bodyWeight = :someLimit" ) + .setDouble( "someLimit", 1 ) + .list(); + fail( "ad-hoc on clause allowed with fetched association" ); + } + catch ( HibernateException e ) { + System.out.println( "TEST (OK) : " + e.getMessage() ); + // the expected response... + } + + txn.commit(); + s.close(); + + data.cleanup(); + } + + public void testInvalidWithSemantics() { + Session s = openSession(); + Transaction txn = s.beginTransaction(); + + try { + // PROBLEM : f.bodyWeight is a reference to a column on the Animal table; however, the 'f' + // alias relates to the Human.friends collection which the aonther Human entity. The issue + // here is the way JoinSequence and Joinable (the persister) interact to generate the + // joins relating to the sublcass/superclass tables + s.createQuery( "from Human h inner join h.friends as f with f.bodyWeight < :someLimit" ) + .setDouble( "someLimit", 1 ) + .list(); + fail( "failure expected" ); + } + catch( QueryException qe ) { + if ( qe.getMessage().indexOf( "can only reference columns in the driving table" ) < 0 ) { + fail( "unexpected failure type [" + qe.getMessage() + "]" ); + } + } + + try { + s.createQuery( "from Animal a inner join a.offspring o inner join o.mother as m inner join m.father as f with o.bodyWeight > 1" ) + .list(); + fail( "failure expected" ); + } + catch( QueryException qe ) { + if ( qe.getMessage().indexOf( "with-clause expressions did not reference from-clause element to which the with-clause was associated" ) < 0 ) { + fail( "unexpected failure type [" + qe.getMessage() + "]" ); + } + } + + try { + s.createQuery( "from Human h inner join h.offspring o with o.mother.father = :cousin" ) + .setEntity( "cousin", s.load( Human.class, new Long(123) ) ) + .list(); + fail( "failure expected" ); + } + catch( QueryException qe ) { + if ( qe.getMessage().indexOf( "with-clause expressions did not reference from-clause element to which the with-clause was associated" ) < 0 ) { + fail( "unexpected failure type [" + qe.getMessage() + "]" ); + } + } + + txn.commit(); + s.close(); + } + + public void testWithClause() { + TestData data = new TestData(); + data.prepare(); + + Session s = openSession(); + Transaction txn = s.beginTransaction(); + + // one-to-many + List list = s.createQuery( "from Human h inner join h.offspring as o with o.bodyWeight < :someLimit" ) + .setDouble( "someLimit", 1 ) + .list(); + assertTrue( "ad-hoc on did not take effect", list.isEmpty() ); + + // many-to-one + list = s.createQuery( "from Animal a inner join a.mother as m with m.bodyWeight < :someLimit" ) + .setDouble( "someLimit", 1 ) + .list(); + assertTrue( "ad-hoc on did not take effect", list.isEmpty() ); + + // many-to-many + list = s.createQuery( "from Human h inner join h.friends as f with f.nickName like 'bubba'" ) + .list(); + assertTrue( "ad-hoc on did not take effect", list.isEmpty() ); + + txn.commit(); + s.close(); + + data.cleanup(); + } + + private class TestData { + public void prepare() { + Session session = openSession(); + Transaction txn = session.beginTransaction(); + + Human mother = new Human(); + mother.setBodyWeight( 10 ); + mother.setDescription( "mother" ); + + Human father = new Human(); + father.setBodyWeight( 15 ); + father.setDescription( "father" ); + + Human child1 = new Human(); + child1.setBodyWeight( 5 ); + child1.setDescription( "child1" ); + + Human child2 = new Human(); + child2.setBodyWeight( 6 ); + child2.setDescription( "child2" ); + + Human friend = new Human(); + friend.setBodyWeight( 20 ); + friend.setDescription( "friend" ); + + child1.setMother( mother ); + child1.setFather( father ); + mother.addOffspring( child1 ); + father.addOffspring( child1 ); + + child2.setMother( mother ); + child2.setFather( father ); + mother.addOffspring( child2 ); + father.addOffspring( child2 ); + + father.setFriends( new ArrayList() ); + father.getFriends().add( friend ); + + session.save( mother ); + session.save( father ); + session.save( child1 ); + session.save( child2 ); + session.save( friend ); + + txn.commit(); + session.close(); + } + + public void cleanup() { + Session session = openSession(); + Transaction txn = session.beginTransaction(); + session.createQuery( "delete Animal where mother is not null" ).executeUpdate(); + List humansWithFriends = session.createQuery( "from Human h where exists(from h.friends)" ).list(); + Iterator itr = humansWithFriends.iterator(); + while ( itr.hasNext() ) { + session.delete( itr.next() ); + } + session.createQuery( "delete Animal" ).executeUpdate(); + txn.commit(); + session.close(); + } + } +} Property changes on: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/hql/WithClauseTest.java ___________________________________________________________________ Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native |
From: <hib...@li...> - 2006-03-01 03:49:51
|
Author: ste...@jb... Date: 2006-02-28 22:49:49 -0500 (Tue, 28 Feb 2006) New Revision: 9527 Removed: branches/Branch_3_1/Hibernate3/.cvsignore Modified: branches/Branch_3_1/Hibernate3/ Log: removed cvsignore file Property changes on: branches/Branch_3_1/Hibernate3 ___________________________________________________________________ Name: svn:ignore - build testout *.ipr *.iws *.iml .classpath .project .nbattrs *.log .clover local *.properties + build testout *.ipr *.iws *.iml .classpath .project .nbattrs *.log .clover local *.properties Deleted: branches/Branch_3_1/Hibernate3/.cvsignore =================================================================== --- branches/Branch_3_1/Hibernate3/.cvsignore 2006-03-01 00:07:54 UTC (rev 9526) +++ branches/Branch_3_1/Hibernate3/.cvsignore 2006-03-01 03:49:49 UTC (rev 9527) @@ -1,12 +0,0 @@ -build -testout -*.ipr -*.iws -*.iml -.classpath -.project -.nbattrs -*.log -.clover -local -*.properties \ No newline at end of file |
From: <hib...@li...> - 2006-03-01 00:07:57
|
Author: ste...@jb... Date: 2006-02-28 19:07:54 -0500 (Tue, 28 Feb 2006) New Revision: 9526 Modified: trunk/Hibernate3/build.xml Log: 3rd times the charm Modified: trunk/Hibernate3/build.xml =================================================================== --- trunk/Hibernate3/build.xml 2006-02-28 23:18:03 UTC (rev 9525) +++ trunk/Hibernate3/build.xml 2006-03-01 00:07:54 UTC (rev 9526) @@ -467,16 +467,16 @@ <target name="dist" depends="splash,versioncheck,jar,javadoc,copysource,copylib,extras,antlr.bnf,refdoc" description="Build everything and package"> - <zip zipfile="${dist.dir}/${fullname}.zip"> + <zip zipfile="${build.dir}/${fullname}.zip"> <zipfileset prefix="${name}-${version.major_minor}" dir="${dist.dir}"/> </zip> - <checksum file="${dist.dir}/${fullname}.zip" algorithm="MD5" fileext=".md5.txt"/> - <tar tarfile="${dist.dir}/${fullname}.tar"> + <checksum file="${build.dir}/${fullname}.zip" algorithm="MD5" fileext=".md5.txt"/> + <tar tarfile="${build.dir}/${fullname}.tar"> <tarfileset prefix="${name}-${version.major_minor}" dir="${dist.dir}"/> </tar> - <gzip src="${dist.dir}/${fullname}.tar" zipfile="${dist.dir}/${fullname}.tar.gz"/> - <delete file="${dist.dir}/${fullname}.tar"/> - <checksum file="${dist.dir}/${fullname}.tar.gz" algorithm="MD5" fileext=".md5.txt"/> + <gzip src="${build.dir}/${fullname}.tar" zipfile="${build.dir}/${fullname}.tar.gz"/> + <delete file="${build.dir}/${fullname}.tar"/> + <checksum file="${build.dir}/${fullname}.tar.gz" algorithm="MD5" fileext=".md5.txt"/> </target> <target name="info" description="Echo system properties"> |
From: <hib...@li...> - 2006-02-28 23:18:05
|
Author: ste...@jb... Date: 2006-02-28 18:18:03 -0500 (Tue, 28 Feb 2006) New Revision: 9525 Modified: trunk/Hibernate3/build.xml Log: grr Modified: trunk/Hibernate3/build.xml =================================================================== --- trunk/Hibernate3/build.xml 2006-02-28 23:14:26 UTC (rev 9524) +++ trunk/Hibernate3/build.xml 2006-02-28 23:18:03 UTC (rev 9525) @@ -476,7 +476,7 @@ </tar> <gzip src="${dist.dir}/${fullname}.tar" zipfile="${dist.dir}/${fullname}.tar.gz"/> <delete file="${dist.dir}/${fullname}.tar"/> - <checksum file="${fullname}.tar.gz" algorithm="MD5" fileext=".md5.txt"/> + <checksum file="${dist.dir}/${fullname}.tar.gz" algorithm="MD5" fileext=".md5.txt"/> </target> <target name="info" description="Echo system properties"> |
From: <hib...@li...> - 2006-02-28 23:14:29
|
Author: ste...@jb... Date: 2006-02-28 18:14:26 -0500 (Tue, 28 Feb 2006) New Revision: 9524 Modified: trunk/Hibernate3/build.xml Log: minor Modified: trunk/Hibernate3/build.xml =================================================================== --- trunk/Hibernate3/build.xml 2006-02-28 22:29:10 UTC (rev 9523) +++ trunk/Hibernate3/build.xml 2006-02-28 23:14:26 UTC (rev 9524) @@ -474,7 +474,7 @@ <tar tarfile="${dist.dir}/${fullname}.tar"> <tarfileset prefix="${name}-${version.major_minor}" dir="${dist.dir}"/> </tar> - <gzip src="${dist.dir}/${fullname}.tar" zipfile="${fullname}.tar.gz"/> + <gzip src="${dist.dir}/${fullname}.tar" zipfile="${dist.dir}/${fullname}.tar.gz"/> <delete file="${dist.dir}/${fullname}.tar"/> <checksum file="${fullname}.tar.gz" algorithm="MD5" fileext=".md5.txt"/> </target> |
From: <hib...@li...> - 2006-02-28 22:29:12
|
Author: ste...@jb... Date: 2006-02-28 17:29:10 -0500 (Tue, 28 Feb 2006) New Revision: 9523 Added: tags/v32alpha1/ Log: Copied: tags/v32alpha1 (from rev 9522, trunk/Hibernate3) |
From: <hib...@li...> - 2006-02-28 22:27:44
|
Author: ste...@jb... Date: 2006-02-28 17:27:40 -0500 (Tue, 28 Feb 2006) New Revision: 9522 Modified: trunk/Hibernate3/build.xml Log: move distributables (zip, tar.gz, and checksums) out to the ${dist.dir} Modified: trunk/Hibernate3/build.xml =================================================================== --- trunk/Hibernate3/build.xml 2006-02-28 20:41:05 UTC (rev 9521) +++ trunk/Hibernate3/build.xml 2006-02-28 22:27:40 UTC (rev 9522) @@ -467,16 +467,16 @@ <target name="dist" depends="splash,versioncheck,jar,javadoc,copysource,copylib,extras,antlr.bnf,refdoc" description="Build everything and package"> - <zip zipfile="${fullname}.zip"> + <zip zipfile="${dist.dir}/${fullname}.zip"> <zipfileset prefix="${name}-${version.major_minor}" dir="${dist.dir}"/> </zip> - <checksum file="${fullname}.zip" /> - <tar tarfile="${fullname}.tar"> + <checksum file="${dist.dir}/${fullname}.zip" algorithm="MD5" fileext=".md5.txt"/> + <tar tarfile="${dist.dir}/${fullname}.tar"> <tarfileset prefix="${name}-${version.major_minor}" dir="${dist.dir}"/> </tar> - <gzip src="${fullname}.tar" zipfile="${fullname}.tar.gz"/> - <delete file="${dist.dir}.tar"/> - <checksum file="${fullname}.tar.gz"/> + <gzip src="${dist.dir}/${fullname}.tar" zipfile="${fullname}.tar.gz"/> + <delete file="${dist.dir}/${fullname}.tar"/> + <checksum file="${fullname}.tar.gz" algorithm="MD5" fileext=".md5.txt"/> </target> <target name="info" description="Echo system properties"> |
From: <hib...@li...> - 2006-02-28 20:41:16
|
Author: ste...@jb... Date: 2006-02-28 15:41:05 -0500 (Tue, 28 Feb 2006) New Revision: 9521 Modified: trunk/Hibernate3/test/org/hibernate/test/sql/OracleDriverStoredProcedures.hbm.xml trunk/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml trunk/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java Log: merged changes needed for datadirect (oracle) support testing Modified: trunk/Hibernate3/test/org/hibernate/test/sql/OracleDriverStoredProcedures.hbm.xml =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/sql/OracleDriverStoredProcedures.hbm.xml 2006-02-28 17:59:02 UTC (rev 9520) +++ trunk/Hibernate3/test/org/hibernate/test/sql/OracleDriverStoredProcedures.hbm.xml 2006-02-28 20:41:05 UTC (rev 9521) @@ -1,48 +1,47 @@ <?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD 3.0//EN" - "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- This version is for Oracle drivers proprietary handling of stored procedures/functions. --> -<hibernate-mapping - package="org.hibernate.test.sql" - default-access="field"> +<hibernate-mapping package="org.hibernate.test.sql" default-access="field"> - <sql-query name="simpleScalar" callable="true"> - <return-scalar column="name" type="string"/> - <return-scalar column="value" type="long"/> - { ? = call simpleScalar(:number) } - </sql-query> - <sql-query name="paramhandling" callable="true"> - <return-scalar column="value" type="long" /> - <return-scalar column="value2" type="long" /> - { ? = call testParamHandling(?,?) } - </sql-query> + <sql-query name="simpleScalar" callable="true"> + <return-scalar column="name" type="string"/> + <return-scalar column="value" type="long"/> + { ? = call simpleScalar(:number) } + </sql-query> - <sql-query name="paramhandling_mixed" callable="true"> - <return-scalar column="value" type="long" /> - <return-scalar column="value2" type="long" /> - { ? = call testParamHandling(?,:second) } - </sql-query> + <sql-query name="paramhandling" callable="true"> + <return-scalar column="value" type="long"/> + <return-scalar column="value2" type="long"/> + { ? = call testParamHandling(?,?) } + </sql-query> - <sql-query name="selectAllEmployments" callable="true"> - <return alias="emp" class="Employment"> - <return-property name="employee" column="EMPLOYEE"/> - <return-property name="employer" column="EMPLOYER"/> - <return-property name="startDate" column="STARTDATE"/> - <return-property name="endDate" column="ENDDATE"/> - <return-property name="regionCode" column="REGIONCODE"/> - <return-property name="employmentId" column="EMPID"/> - <return-property name="salary"> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - </return> - { ? = call allEmployments() } - </sql-query> - + <sql-query name="paramhandling_mixed" callable="true"> + <return-scalar column="value" type="long"/> + <return-scalar column="value2" type="long"/> + { ? = call testParamHandling(?,:second) } + </sql-query> + + <sql-query name="selectAllEmployments" callable="true"> + <return alias="emp" class="Employment"> + <return-property name="employee" column="EMPLOYEE"/> + <return-property name="employer" column="EMPLOYER"/> + <return-property name="startDate" column="STARTDATE"/> + <return-property name="endDate" column="ENDDATE"/> + <return-property name="regionCode" column="REGIONCODE"/> + <return-property name="employmentId" column="EMPID"/> + <return-property name="salary"> + <return-column name="VALUE"/> + <return-column name="CURRENCY"/> + </return-property> + </return> + { ? = call allEmployments() } + </sql-query> + </hibernate-mapping> Modified: trunk/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml 2006-02-28 17:59:02 UTC (rev 9520) +++ trunk/Hibernate3/test/org/hibernate/test/sql/OracleEmployment.hbm.xml 2006-02-28 20:41:05 UTC (rev 9521) @@ -1,74 +1,75 @@ <?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD 3.0//EN" - "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> +<!DOCTYPE hibernate-mapping PUBLIC + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> -<!-- +<!-- This mapping demonstrates the use of Hibernate with all-handwritten SQL! - + This version is for Oracle - + --> -<hibernate-mapping - package="org.hibernate.test.sql" - default-access="field"> +<hibernate-mapping + package="org.hibernate.test.sql" + default-access="field"> - <class name="Organization"> - <id name="id" unsaved-value="0" column="orgid"> - <generator class="increment"/> - </id> - <property name="name" not-null="true"/> - <set name="employments" - inverse="true" - order-by="DUMMY"> - <key column="employer"/> <!-- only needed for DDL generation --> - <one-to-many class="Employment"/> - <loader query-ref="organizationEmployments"/> - </set> - <!-- query-list name="currentEmployments" - query-ref="organizationCurrentEmployments"--> - <loader query-ref="organization"/> - <sql-insert>INSERT INTO ORGANIZATION (NAME, ORGID) VALUES ( UPPER(?), ? )</sql-insert> - <sql-update>UPDATE ORGANIZATION SET NAME=UPPER(?) WHERE ORGID=?</sql-update> - <sql-delete>DELETE FROM ORGANIZATION WHERE ORGID=?</sql-delete> - </class> - - <class name="Person"> - <id name="id" unsaved-value="0" column="perid"> - <generator class="increment"/> - </id> - <property name="name" not-null="true"/> - <loader query-ref="person"/> - <sql-insert>INSERT INTO PERSON (NAME, PERID) VALUES ( UPPER(?), ? )</sql-insert> - <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE PERID=?</sql-update> - <sql-delete>DELETE FROM PERSON WHERE PERID=?</sql-delete> - </class> - - <class name="Employment"> - <id name="employmentId" unsaved-value="0" column="empid"> - <generator class="increment"/> - </id> - <many-to-one name="employee" not-null="true" update="false"/> - <many-to-one name="employer" not-null="true" update="false"/> - <property name="startDate" not-null="true" update="false" insert="false"/> - <property name="endDate" insert="false"/> - <property name="regionCode" update="false"/> - <property name="salary" type="org.hibernate.test.sql.MonetaryAmountUserType"> - <column name="VALUE" sql-type="float"/> - <column name="CURRENCY"/> - </property> - <loader query-ref="employment"/> - <sql-insert> - INSERT INTO EMPLOYMENT - (EMPLOYEE, EMPLOYER, STARTDATE, REGIONCODE, VALUE, CURRENCY, EMPID) - VALUES (?, ?, CURRENT_DATE, UPPER(?), ?, ?, ?) - </sql-insert> - <sql-update>UPDATE EMPLOYMENT SET ENDDATE=?, VALUE=?, CURRENCY=? WHERE EMPID=?</sql-update> - <sql-delete>DELETE FROM EMPLOYMENT WHERE EMPID=?</sql-delete> - </class> + <class name="Organization"> + <id name="id" unsaved-value="0" column="orgid"> + <generator class="increment"/> + </id> + <property name="name" not-null="true"/> + <set name="employments" + inverse="true" + order-by="DUMMY"> + <key column="employer"/> + <!-- only needed for DDL generation --> + <one-to-many class="Employment"/> + <loader query-ref="organizationEmployments"/> + </set> + <!-- query-list name="currentEmployments" + query-ref="organizationCurrentEmployments"--> + <loader query-ref="organization"/> + <sql-insert>INSERT INTO ORGANIZATION (NAME, ORGID) VALUES ( UPPER(?), ? )</sql-insert> + <sql-update>UPDATE ORGANIZATION SET NAME=UPPER(?) WHERE ORGID=?</sql-update> + <sql-delete>DELETE FROM ORGANIZATION WHERE ORGID=?</sql-delete> + </class> + <class name="Person"> + <id name="id" unsaved-value="0" column="perid"> + <generator class="increment"/> + </id> + <property name="name" not-null="true"/> + <loader query-ref="person"/> + <sql-insert>INSERT INTO PERSON (NAME, PERID) VALUES ( UPPER(?), ? )</sql-insert> + <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE PERID=?</sql-update> + <sql-delete>DELETE FROM PERSON WHERE PERID=?</sql-delete> + </class> + + <class name="Employment"> + <id name="employmentId" unsaved-value="0" column="empid"> + <generator class="increment"/> + </id> + <many-to-one name="employee" not-null="true" update="false"/> + <many-to-one name="employer" not-null="true" update="false"/> + <property name="startDate" not-null="true" update="false" insert="false"/> + <property name="endDate" insert="false"/> + <property name="regionCode" update="false"/> + <property name="salary" type="org.hibernate.test.sql.MonetaryAmountUserType"> + <column name="VALUE" sql-type="float"/> + <column name="CURRENCY"/> + </property> + <loader query-ref="employment"/> + <sql-insert> + INSERT INTO EMPLOYMENT + (EMPLOYEE, EMPLOYER, STARTDATE, REGIONCODE, VALUE, CURRENCY, EMPID) + VALUES (?, ?, CURRENT_DATE, UPPER(?), ?, ?, ?) + </sql-insert> + <sql-update>UPDATE EMPLOYMENT SET ENDDATE=?, VALUE=?, CURRENCY=? WHERE EMPID=?</sql-update> + <sql-delete>DELETE FROM EMPLOYMENT WHERE EMPID=?</sql-delete> + </class> + <resultset name="org-emp-regionCode"> <return-scalar column="regionCode" type="string"/> <return alias="org" class="Organization"/> @@ -81,159 +82,113 @@ <return-join alias="pers" property="emp.employee"/> </resultset> - <sql-query name="person"> - <return alias="p" class="Person" lock-mode="upgrade"/> - SELECT NAME AS {p.name}, PERID AS {p.id} FROM PERSON WHERE PERID=? /*FOR UPDATE*/ - </sql-query> + <sql-query name="person"> + <return alias="p" class="Person" lock-mode="upgrade"/> + SELECT NAME AS {p.name}, PERID AS {p.id} FROM PERSON WHERE PERID=? /*FOR UPDATE*/ + </sql-query> - <sql-query name="organization"> - <return alias="org" class="Organization"/> - <return-join alias="emp" property="org.employments"/> - SELECT {org.*}, {emp.*} - FROM ORGANIZATION org - LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER - WHERE org.ORGID=? - </sql-query> + <sql-query name="organization"> + <return alias="org" class="Organization"/> + <return-join alias="emp" property="org.employments"/> + SELECT {org.*}, {emp.*} + FROM ORGANIZATION org + LEFT OUTER JOIN EMPLOYMENT emp ON org.ORGID = emp.EMPLOYER + WHERE org.ORGID=? + </sql-query> + <sql-query name="allOrganizationsWithEmployees" flush-mode="never"> + <return alias="org" class="Organization"/> + SELECT DISTINCT org.NAME AS {org.name}, org.ORGID AS {org.id} + FROM ORGANIZATION org + INNER JOIN EMPLOYMENT e ON e.EMPLOYER = org.ORGID + </sql-query> - <!--sql-query name="organization"> - <return alias="org" class="Organization"/> - SELECT NAME AS {org.name}, ORGID AS {org.id} FROM ORGANIZATION - WHERE ORGID=? - </sql-query--> - - <sql-query name="allOrganizationsWithEmployees" flush-mode="never"> - <return alias="org" class="Organization"/> - SELECT DISTINCT org.NAME AS {org.name}, org.ORGID AS {org.id} - FROM ORGANIZATION org - INNER JOIN EMPLOYMENT e ON e.EMPLOYER = org.ORGID - </sql-query> - - - - - <sql-query name="employment"> - <return alias="emp" class="Employment"/> - SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, - STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate}, - REGIONCODE as {emp.regionCode}, EMPID AS {emp.id} - FROM EMPLOYMENT - WHERE EMPID = ? - </sql-query> + <sql-query name="employment"> + <return alias="emp" class="Employment"/> + SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, + STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate}, + REGIONCODE as {emp.regionCode}, EMPID AS {emp.id} + FROM EMPLOYMENT + WHERE EMPID = ? + </sql-query> - <sql-query name="organizationEmployments"> - <load-collection alias="empcol" role="Organization.employments"/> - SELECT {empcol.*} - FROM EMPLOYMENT empcol - WHERE EMPLOYER = :id - ORDER BY STARTDATE ASC, EMPLOYEE ASC - </sql-query> + <sql-query name="organizationEmployments"> + <load-collection alias="empcol" role="Organization.employments"/> + SELECT {empcol.*} + FROM EMPLOYMENT empcol + WHERE EMPLOYER = :id + ORDER BY STARTDATE ASC, EMPLOYEE ASC + </sql-query> - - <sql-query name="organizationCurrentEmployments"> - <return alias="emp" class="Employment"> - <return-property name="salary"> - <!-- as multi column properties are not supported via the - {}-syntax, we need to provide an explicit column list for salary via <return-property> --> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - <!-- Here we are remapping endDate. Notice that we can still use {emp.endDate} in the SQL. --> - <return-property name="endDate" column="myEndDate"/> - </return> - <synchronize table="EMPLOYMENT"/> - SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, - STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate}, - REGIONCODE as {emp.regionCode}, EMPID AS {emp.id}, VALUE, CURRENCY - FROM EMPLOYMENT - WHERE EMPLOYER = :id AND ENDDATE IS NULL - ORDER BY STARTDATE ASC - </sql-query> + <sql-query name="organizationCurrentEmployments"> + <return alias="emp" class="Employment"> + <return-property name="salary"> + <!-- as multi column properties are not supported via the + {}-syntax, we need to provide an explicit column list for salary via <return-property> --> + <return-column name="VALUE"/> + <return-column name="CURRENCY"/> + </return-property> + <!-- Here we are remapping endDate. Notice that we can still use {emp.endDate} in the SQL. --> + <return-property name="endDate" column="myEndDate"/> + </return> + <synchronize table="EMPLOYMENT"/> + SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, + STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate}, + REGIONCODE as {emp.regionCode}, EMPID AS {emp.id}, VALUE, CURRENCY + FROM EMPLOYMENT + WHERE EMPLOYER = :id AND ENDDATE IS NULL + ORDER BY STARTDATE ASC + </sql-query> - <sql-query name="simpleScalar" callable="true"> - <return-scalar column="name" type="string"/> - <return-scalar column="value" type="long"/> - { ? = call simpleScalar(:number) } - </sql-query> - <sql-query name="paramhandling" callable="true"> - <return-scalar column="value" type="long" /> - <return-scalar column="value2" type="long" /> - { ? = call testParamHandling(?,?) } - </sql-query> + <database-object> + <create> + CREATE OR REPLACE FUNCTION testParamHandling (j number, i number) + RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; + BEGIN + OPEN st_cursor FOR + SELECT j as value, i as value2 from dual; + RETURN st_cursor; + END; + </create> + <drop> + DROP FUNCTION testParamHandling + </drop> + </database-object> - <sql-query name="paramhandling_mixed" callable="true"> - <return-scalar column="value" type="long" /> - <return-scalar column="value2" type="long" /> - { ? = call testParamHandling(?,:second) } - </sql-query> + <database-object> + <create> + CREATE OR REPLACE FUNCTION simpleScalar (j number) + RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; + BEGIN + OPEN st_cursor FOR + SELECT j as value, 'getAll' as name from dual; + RETURN st_cursor; + END; + </create> + <drop> + DROP FUNCTION simpleScalar + </drop> + </database-object> - <sql-query name="selectAllEmployments" callable="true"> - <return alias="emp" class="Employment"> - <return-property name="employee" column="EMPLOYEE"/> - <return-property name="employer" column="EMPLOYER"/> - <return-property name="startDate" column="STARTDATE"/> - <return-property name="endDate" column="ENDDATE"/> - <return-property name="regionCode" column="REGIONCODE"/> - <return-property name="employmentId" column="EMPID"/> - <return-property name="salary"> - <return-column name="VALUE"/> - <return-column name="CURRENCY"/> - </return-property> - </return> - { ? = call allEmployments() } - </sql-query> + <database-object> + <create> + CREATE OR REPLACE FUNCTION allEmployments + RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; + BEGIN + OPEN st_cursor FOR + SELECT EMPLOYEE, EMPLOYER, STARTDATE, ENDDATE, + REGIONCODE, EMPID, VALUE, CURRENCY + FROM EMPLOYMENT; + RETURN st_cursor; + END; + </create> + <drop> + DROP FUNCTION allEmployments + </drop> + </database-object> - - <database-object> - <create> - CREATE OR REPLACE FUNCTION testParamHandling (j number, i number) - RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; - BEGIN - OPEN st_cursor FOR - SELECT j as value, i as value2 from dual; - RETURN st_cursor; - END; - </create> - <drop> - DROP FUNCTION paramHandling - </drop> - </database-object> - - <database-object> - <create> - CREATE OR REPLACE FUNCTION simpleScalar (j number) - RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; - BEGIN - OPEN st_cursor FOR - SELECT j as value, 'getAll' as name from dual; - RETURN st_cursor; - END; - </create> - <drop> - DROP FUNCTION simpleScalar - </drop> - </database-object> - - <database-object> - <create> - CREATE OR REPLACE FUNCTION allEmployments - RETURN SYS_REFCURSOR AS st_cursor SYS_REFCURSOR; - BEGIN - OPEN st_cursor FOR - SELECT EMPLOYEE, EMPLOYER, STARTDATE, ENDDATE, - REGIONCODE, EMPID, VALUE, CURRENCY - FROM EMPLOYMENT; - RETURN st_cursor; - END; - </create> - <drop> - DROP FUNCTION allEmployments - </drop> - </database-object> - - </hibernate-mapping> Modified: trunk/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java =================================================================== --- trunk/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java 2006-02-28 17:59:02 UTC (rev 9520) +++ trunk/Hibernate3/test/org/hibernate/test/sql/OracleSQLTest.java 2006-02-28 20:41:05 UTC (rev 9521) @@ -6,18 +6,19 @@ import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Oracle9Dialect; +import org.hibernate.dialect.DataDirectOracle9Dialect; /** * @author Gavin King */ public class OracleSQLTest extends HandSQLTest { - + public OracleSQLTest(String str) { super(str); } protected String[] getMappings() { - return new String[] { "sql/OracleEmployment.hbm.xml" }; + return new String[] { "sql/OracleEmployment.hbm.xml", "sql/OracleDriverStoredProcedures.hbm.xml" }; } public static Test suite() { @@ -25,7 +26,7 @@ } public boolean appliesTo(Dialect dialect) { - return ( dialect instanceof Oracle9Dialect ); + return ( dialect instanceof Oracle9Dialect ) && !( dialect instanceof DataDirectOracle9Dialect ); } } |
From: <hib...@li...> - 2006-02-28 17:59:06
|
Author: ste...@jb... Date: 2006-02-28 12:59:02 -0500 (Tue, 28 Feb 2006) New Revision: 9520 Modified: trunk/Hibernate3/src/org/hibernate/dialect/HSQLDialect.java Log: just log a warning on lock() w/ LockMode > READ with HSQLDB Modified: trunk/Hibernate3/src/org/hibernate/dialect/HSQLDialect.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/dialect/HSQLDialect.java 2006-02-28 17:33:51 UTC (rev 9519) +++ trunk/Hibernate3/src/org/hibernate/dialect/HSQLDialect.java 2006-02-28 17:59:02 UTC (rev 9520) @@ -9,7 +9,6 @@ import org.hibernate.LockMode; import org.hibernate.StaleObjectStateException; import org.hibernate.JDBCException; -import org.hibernate.HibernateException; import org.hibernate.engine.SessionImplementor; import org.hibernate.persister.entity.Lockable; import org.hibernate.util.ReflectHelper; @@ -299,21 +298,9 @@ public void lock(Serializable id, Object version, Object object, SessionImplementor session) throws StaleObjectStateException, JDBCException { if ( getLockMode().greaterThan( LockMode.READ ) ) { - throw new HibernateException( "HSQLDB supports only READ_UNCOMMITTED isolation" ); + log.warn( "HSQLDB supports only READ_UNCOMMITTED isolation" ); } - else { - super.lock( id, version, object, session ); - } + super.lock( id, version, object, session ); } - - protected String generateLockString() { - if ( getLockMode().greaterThan( LockMode.READ ) ) { - log.info( "generating locking strategy [" + getLockMode() + "]; HSQLDB supports only READ_UNCOMMITTED isolation" ); - return null; - } - else { - return super.generateLockString(); - } - } } } |
From: <hib...@li...> - 2006-02-28 17:33:59
|
Author: ste...@jb... Date: 2006-02-28 12:33:51 -0500 (Tue, 28 Feb 2006) New Revision: 9519 Modified: trunk/Hibernate3/build.xml trunk/Hibernate3/changelog.txt trunk/Hibernate3/doc/reference/en/master.xml trunk/Hibernate3/readme.txt trunk/Hibernate3/src/org/hibernate/cfg/Environment.java Log: prep 3.2-alpha1 Modified: trunk/Hibernate3/build.xml =================================================================== --- trunk/Hibernate3/build.xml 2006-02-28 17:06:56 UTC (rev 9518) +++ trunk/Hibernate3/build.xml 2006-02-28 17:33:51 UTC (rev 9519) @@ -17,10 +17,11 @@ <property name="name" value="hibernate"/> <property name="name2" value="hibernate3"/> <property name="version.major" value="3"/> - <property name="version.minor" value="1"/> - <property name="version.patchlevel" value="2"/> - <property name="version.sansPatchLevel" value="${version.major}.${version.minor}"/> - <property name="version.full" value="${version.sansPatchLevel}.${version.patchlevel}"/> + <property name="version.minor" value="2"/> + <property name="version.micro" value="0"/> + <property name="version.qualifier" value="alpha1"/> + <property name="version.full" value="${version.major}.${version.minor}.${version.micro}.${version.qualifier}"/> + <property name="version.major_minor" value="${version.major}.${version.minor}"/> <property name="fullname" value="${name}-${version.full}"/> <!-- set global properties for this build --> @@ -38,7 +39,7 @@ <property name="test.out.dir" value="testout"/> <property name="instrumenttest.out.dir" value="instrumenttestout"/> <property name="clover.out.dir" value="cloverout"/> - <property name="dist.dir" value="../${name}-${version.sansPatchLevel}"/> + <property name="dist.dir" value="../${name}-${version.major_minor}"/> <property name="doc.dir" value="doc"/> <property name="doc.api.dir" value="${doc.dir}/api"/> <property name="doc.ref.dir" value="${doc.dir}/reference"/> @@ -338,7 +339,10 @@ <include name="org/hibernate/**/*.class"/> <patternset refid="jar.files"/> <manifest> - <attribute name="Hibernate-Version" value="${version.full}"/> + <attribute name="Implementation-Title" value="Hibernate3"/> + <attribute name="Implementation-Version" value="${version.full}"/> + <attribute name="Implementation-Vendor" value="hibernate.org"/> + <attribute name="Hibernate-Version" value="${version.full}"/> </manifest> </jar> </target> @@ -464,11 +468,11 @@ depends="splash,versioncheck,jar,javadoc,copysource,copylib,extras,antlr.bnf,refdoc" description="Build everything and package"> <zip zipfile="${fullname}.zip"> - <zipfileset prefix="${name}-${version.sansPatchLevel}" dir="${dist.dir}"/> + <zipfileset prefix="${name}-${version.major_minor}" dir="${dist.dir}"/> </zip> - <checksum file="${fullname}.zip"/> + <checksum file="${fullname}.zip" /> <tar tarfile="${fullname}.tar"> - <tarfileset prefix="${name}-${version.sansPatchLevel}" dir="${dist.dir}"/> + <tarfileset prefix="${name}-${version.major_minor}" dir="${dist.dir}"/> </tar> <gzip src="${fullname}.tar" zipfile="${fullname}.tar.gz"/> <delete file="${dist.dir}.tar"/> Modified: trunk/Hibernate3/changelog.txt =================================================================== --- trunk/Hibernate3/changelog.txt 2006-02-28 17:06:56 UTC (rev 9518) +++ trunk/Hibernate3/changelog.txt 2006-02-28 17:33:51 UTC (rev 9519) @@ -5,7 +5,36 @@ refer to the particular case on JIRA using the issue tracking number to learn more about each case. +Chages in version 3.2 alpha1 (2006.02.28) +------------------------------------------- +** Bug + * [HHH-687] - Exception QuerySyntaxError not really serializable + * [HHH-1236] - Remove static reference to classloader, to avoid memory leak at webapp reload + * [HHH-1287] - Problem with WAS ExtendedJTATransaction not available when using MDB + * [HHH-1419] - Update + Exists doesn't seem to work + * [HHH-1445] - SchemaUpdate closes shared ConnectionProvider + * [HHH-1464] - QueryException from Query.getReturnAliases when query uses "fetch" + * [HHH-1486] - Concurrent access issues with both SoftLimitMRUCache and SimpleMRUCache + * [HHH-1508] - Session.createQuery() should not flush the session + +** Improvement + * [HHH-1411] - Collection fetches and DISTINCT + * [HHH-1412] - Collection fetches and firstResult/maxRows + * [HHH-1416] - LockMode.FORCE to implement EJB3 LockModeType.WRITE + * [HHH-1457] - support new optimisitc locking capabilities of JBossCache + * [HHH-1466] - better handling of Antlr exceptions + * [HHH-1516] - support DataDirect standard jdbc stored procedures + * [HHH-1518] - Guarentee LockMode behaviors + * [HHH-1520] - with clause with implied joins within an explicit join + * [HHH-1526] - Improved DTDEntityResolver + +** New Feature + * [HHH-1251] - Avoid replicating the clearing of TreeCache on SessionFactory..close() + * [HHH-1410] - FlushMode.AUTO -> COMMIT when outside a transaction + * [HHH-1447] - pluggable bytecode libraries + + Changes in version 3.1.2 (01.27.2006) ------------------------------------------- Modified: trunk/Hibernate3/doc/reference/en/master.xml =================================================================== --- trunk/Hibernate3/doc/reference/en/master.xml 2006-02-28 17:06:56 UTC (rev 9518) +++ trunk/Hibernate3/doc/reference/en/master.xml 2006-02-28 17:33:51 UTC (rev 9519) @@ -33,7 +33,7 @@ <bookinfo> <title>HIBERNATE - Relational Persistence for Idiomatic Java</title> <subtitle>Hibernate Reference Documentation</subtitle> - <releaseinfo>3.1.2</releaseinfo> + <releaseinfo>3.2 alpha1</releaseinfo> </bookinfo> <toc/> Modified: trunk/Hibernate3/readme.txt =================================================================== --- trunk/Hibernate3/readme.txt 2006-02-28 17:06:56 UTC (rev 9518) +++ trunk/Hibernate3/readme.txt 2006-02-28 17:33:51 UTC (rev 9519) @@ -1,6 +1,6 @@ Hibernate - Relational Persistence for Idiomatic Java ===================================================== -version 3.1.2, Jan 27, 2006 +version 3.2 alpha1, Feb 28, 2006 Instructions ------------ Modified: trunk/Hibernate3/src/org/hibernate/cfg/Environment.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/cfg/Environment.java 2006-02-28 17:06:56 UTC (rev 9518) +++ trunk/Hibernate3/src/org/hibernate/cfg/Environment.java 2006-02-28 17:33:51 UTC (rev 9519) @@ -153,7 +153,7 @@ */ public final class Environment { - public static final String VERSION = "3.1.2"; + public static final String VERSION = "3.2 alpha1"; /** * <tt>ConnectionProvider</tt> implementor to use when obtaining connections |
From: <hib...@li...> - 2006-02-28 16:44:41
|
Author: nusco Date: 2006-02-28 11:44:32 -0500 (Tue, 28 Feb 2006) New Revision: 9516 Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXFactory.java trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXMethod.java trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXProperty.java Log: removed duplication in XMembers/XFactory Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXFactory.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXFactory.java 2006-02-28 15:34:58 UTC (rev 9515) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXFactory.java 2006-02-28 16:44:32 UTC (rev 9516) @@ -114,62 +114,17 @@ PropertyKey key = new PropertyKey( member, owner ); JavaXProperty xProperty = xProperties.get( key ); if ( ! xProperties.containsKey( key ) ) { - final TypeEnvironment context = owner.getTypeEnvironment(); - final Type propType = Util.typeOf( member, context ); - - //that's really yukky, this mechanic should be held by JavaXMamber itself - if ( JavaXProperty.isArrayType( propType ) ) { - xProperty = new JavaXProperty( - member, propType, context, this, buildArrayTypeExtractor( context, propType ) - ); - } - else if ( JavaXProperty.isCollectionType( propType ) ) { - xProperty = new JavaXProperty( - member, propType, context, JavaXFactory.this, buildCollectionTypeExtractor( context, propType ) - ); - } - else if ( JavaXProperty.isBaseType( propType ) ) { - xProperty = new JavaXProperty( - member, propType, context, this, buildSimpleTypeExtractor( context, propType ) - ); - } - else { - xProperty = null; - } - + xProperty = JavaXProperty.create( member, owner.getTypeEnvironment(), this ); xProperties.put( key, xProperty ); } return xProperty; } XMethod getXMethod(Member member, JavaXClass owner) { - //TODO code copy/pastle from getXProperty PropertyKey key = new PropertyKey( member, owner ); JavaXMethod xMethod = xMethods.get( key ); if ( ! xMethods.containsKey( key ) ) { - final TypeEnvironment context = owner.getTypeEnvironment(); - final Type propType = Util.typeOf( member, context ); - - - if ( JavaXProperty.isArrayType( propType ) ) { - xMethod = new JavaXMethod( - member, propType, context, this, buildArrayTypeExtractor( context, propType ) - ); - } - else if ( JavaXProperty.isCollectionType( propType ) ) { - xMethod = new JavaXMethod( - member, propType, context, JavaXFactory.this, buildCollectionTypeExtractor( context, propType ) - ); - } - else if ( JavaXProperty.isBaseType( propType ) ) { - xMethod = new JavaXMethod( - member, propType, context, this, buildSimpleTypeExtractor( context, propType ) - ); - } - else { - xMethod = null; - } - + xMethod = JavaXMethod.create( member, owner.getTypeEnvironment(), this ); xMethods.put( key, xMethod ); } return xMethod; @@ -228,10 +183,6 @@ private Class<? extends Object> arrayTypeOf(Class componentType) { return Array.newInstance( componentType, 0 ).getClass(); } - - private Type getJavaType() { - return context.bind( propType ); - } }; } @@ -333,6 +284,16 @@ }.doSwitch( t ); } + public PropertyTypeExtractor buildTypeExtractor(TypeEnvironment context, Type propType) { + if ( JavaXMember.isArrayType( propType ) ) + return buildArrayTypeExtractor( context, propType ); + if ( JavaXMember.isCollectionType( propType ) ) + return buildCollectionTypeExtractor( context, propType ); + if ( JavaXMember.isBaseType( propType ) ) + return buildSimpleTypeExtractor( context, propType ); + return null; + } + public boolean equals(XClass class1, Class class2) { if ( class1 == null ) { return class2 == null; Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXMethod.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXMethod.java 2006-02-28 15:34:58 UTC (rev 9515) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXMethod.java 2006-02-28 16:44:32 UTC (rev 9516) @@ -13,7 +13,15 @@ */ public class JavaXMethod extends JavaXMember implements XMethod { - protected JavaXMethod(Member member, Type type, TypeEnvironment env, JavaXFactory factory, PropertyTypeExtractor propertyTypeExtractor) { + static JavaXMethod create(Member member, TypeEnvironment context, JavaXFactory factory) { + final Type propType = Util.typeOf( member, context ); + PropertyTypeExtractor typeExtractor = factory.buildTypeExtractor( context, propType ); + if( typeExtractor == null ) + return null; + return new JavaXMethod( member, propType, context, factory, typeExtractor); + } + + private JavaXMethod(Member member, Type type, TypeEnvironment env, JavaXFactory factory, PropertyTypeExtractor propertyTypeExtractor) { super(member, type, env, factory, propertyTypeExtractor); assert member instanceof Method; } Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXProperty.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXProperty.java 2006-02-28 15:34:58 UTC (rev 9515) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/reflection/java/JavaXProperty.java 2006-02-28 16:44:32 UTC (rev 9516) @@ -17,7 +17,6 @@ */ class JavaXProperty extends JavaXMember implements XProperty { - static boolean isProperty(Field f, Type boundType, Filter filter) { return isPropertyType( boundType ) && !f.isSynthetic() @@ -39,7 +38,15 @@ // TODO should we use stronger checking on the naming of getters/setters, or just leave this to the validator? } - protected JavaXProperty(Member member, Type type, TypeEnvironment env, JavaXFactory factory, PropertyTypeExtractor propertyTypeExtractor) { + static JavaXProperty create(Member member, final TypeEnvironment context, final JavaXFactory factory) { + final Type propType = Util.typeOf( member, context ); + PropertyTypeExtractor typeExtractor = factory.buildTypeExtractor( context, propType ); + if( typeExtractor == null ) + return null; + return new JavaXProperty( member, propType, context, factory, typeExtractor ); + } + + private JavaXProperty(Member member, Type type, TypeEnvironment env, JavaXFactory factory, PropertyTypeExtractor propertyTypeExtractor) { super(member, type, env, factory, propertyTypeExtractor); assert member instanceof Field || member instanceof Method; } |
From: <hib...@li...> - 2006-02-28 15:35:09
|
Author: max...@jb... Date: 2006-02-28 10:34:58 -0500 (Tue, 28 Feb 2006) New Revision: 9515 Modified: trunk/HibernateExt/tools/src/templates/seam/editor.java.ftl Log: layout Modified: trunk/HibernateExt/tools/src/templates/seam/editor.java.ftl =================================================================== --- trunk/HibernateExt/tools/src/templates/seam/editor.java.ftl 2006-02-28 14:52:40 UTC (rev 9514) +++ trunk/HibernateExt/tools/src/templates/seam/editor.java.ftl 2006-02-28 15:34:58 UTC (rev 9515) @@ -17,14 +17,23 @@ public String delete(); public String create(); -<#foreach property in pojo.getAllPropertiesIterator()><#if c2h.isManyToOne(property)><#assign parentPojo = c2j.getPOJOClass(cfg.getClassMapping(property.value.referencedEntityName))> public String ${property.name}(); - public String select${parentPojo.shortName}(); +<#foreach property in pojo.getAllPropertiesIterator()> +<#if c2h.isManyToOne(property)> +<#assign parentPojo = c2j.getPOJOClass(cfg.getClassMapping(property.value.referencedEntityName))> + public String ${property.name}(); + public String select${parentPojo.shortName}(); -</#if><#if c2h.isOneToManyCollection(property)><#assign childPojo = c2j.getPOJOClass(property.value.element.associatedClass)> public String create${childPojo.shortName}(); +</#if> +<#if c2h.isOneToManyCollection(property)> +<#assign childPojo = c2j.getPOJOClass(property.value.element.associatedClass)> + public String create${childPojo.shortName}(); public String select${childPojo.shortName}(); -<#if property.value.key.nullable> //public String remove${childPojo.shortName}(); +<#if property.value.key.nullable> + //public String remove${childPojo.shortName}(); </#if> -</#if></#foreach> public String done(); +</#if> +</#foreach> + public String done(); public void destroy(); } |
From: <hib...@li...> - 2006-02-28 14:01:02
|
Author: max...@jb... Date: 2006-02-28 09:00:48 -0500 (Tue, 28 Feb 2006) New Revision: 9513 Added: trunk/HibernateExt/tools/lib/testlibs/jboss-annotations-ejb3.jar Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2JavaTool.java trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/POJOExporter.java trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/BasicPOJOClass.java trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java trunk/HibernateExt/tools/src/templates/pojo/PojoFields.ftl trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/SeamAntTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Constructors.hbm.xml trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Customer.hbm.xml trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java trunk/HibernateExt/tools/src/test5.0/org/hibernate/tool/hbm2x/Hbm2JavaEjb3ForJDK50Test.java trunk/HibernateExt/tools/src/testsupport/anttest-build.xml trunk/HibernateExt/tools/src/testsupport/seamtest-build.xml Log: (basic) relationship seam generation test HBX-611 hbm2java breaks on composite-element and jdk5=true HBX-607 a formula property is added to the full constructor of the generated class templates cleanup Added: trunk/HibernateExt/tools/lib/testlibs/jboss-annotations-ejb3.jar =================================================================== (Binary files differ) Property changes on: trunk/HibernateExt/tools/lib/testlibs/jboss-annotations-ejb3.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2JavaTool.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2JavaTool.java 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/Cfg2JavaTool.java 2006-02-28 14:00:48 UTC (rev 9513) @@ -17,6 +17,7 @@ import org.apache.commons.logging.LogFactory; import org.hibernate.Hibernate; import org.hibernate.HibernateException; +import org.hibernate.cfg.reveng.ReverseEngineeringStrategyUtil; import org.hibernate.mapping.Array; import org.hibernate.mapping.Collection; import org.hibernate.mapping.Component; @@ -289,7 +290,10 @@ } private String getJavaTypeName(Value value, boolean preferRawTypeNames) { - + if ( value instanceof Component) { + // composite-element breaks without it. + return ((Component)value).getComponentClassName(); + } if ( value instanceof ToOne ) { return ( (ToOne) value ).getReferencedEntityName(); // should get the cfg and lookup the persistenclass. } @@ -453,5 +457,8 @@ } - + + public String simplePluralize(String str) { + return ReverseEngineeringStrategyUtil.simplePluralize(str); + } } Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/POJOExporter.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/POJOExporter.java 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/POJOExporter.java 2006-02-28 14:00:48 UTC (rev 9513) @@ -16,7 +16,6 @@ public class POJOExporter extends GenericExporter { private static final String POJO_JAVACLASS_VM = "Pojo"; - private static final Log log = LogFactory.getLog(POJOExporter.class); private boolean ejb3; private boolean jdk5; Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/BasicPOJOClass.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/BasicPOJOClass.java 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/BasicPOJOClass.java 2006-02-28 14:00:48 UTC (rev 9513) @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; +import org.hibernate.cfg.reveng.ReverseEngineeringStrategyUtil; import org.hibernate.mapping.Collection; import org.hibernate.mapping.Column; import org.hibernate.mapping.Component; @@ -505,6 +506,14 @@ return beanCapitalize( p.getName() ); } + + // get the "opposite" collectionnae for a property. Currently a "hack" that just uses the same naming algorithm as in reveng, will fail on more general models! + public String getCollectionNameFor(Property property) { + String str = getPropertyName(property); + return ReverseEngineeringStrategyUtil.simplePluralize(str); + } + + /** * foo -> Foo * FOo -> FOo Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java 2006-02-28 14:00:48 UTC (rev 9513) @@ -14,6 +14,7 @@ import org.hibernate.id.PersistentIdentifierGenerator; import org.hibernate.mapping.Column; import org.hibernate.mapping.Component; +import org.hibernate.mapping.Formula; import org.hibernate.mapping.KeyValue; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Property; @@ -656,16 +657,38 @@ continue; // dont add non assigned identifiers } else if(field.equals(pc.getVersion())) { continue; // version prop + } else if(field.isBackRef()) { + continue; + } else if(isFormula(field)) { + continue; } else { result.add( field ); } - - } return result; } + private boolean isFormula(Property field) { + Value value = field.getValue(); + boolean foundFormula = false; + + if(value!=null && value.getColumnSpan()>0) { + Iterator columnIterator = value.getColumnIterator(); + while ( columnIterator.hasNext() ) { + Selectable element = (Selectable) columnIterator.next(); + if(!(element instanceof Formula)) { + return false; + } else { + foundFormula = true; + } + } + } else { + return false; + } + return foundFormula; + } + public List getPropertyClosureForSuperclassFullConstructor() { return getPropertyClosureForSuperclassFullConstructor(clazz); } Modified: trunk/HibernateExt/tools/src/templates/pojo/PojoFields.ftl =================================================================== --- trunk/HibernateExt/tools/src/templates/pojo/PojoFields.ftl 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/templates/pojo/PojoFields.ftl 2006-02-28 14:00:48 UTC (rev 9513) @@ -4,4 +4,5 @@ ${pojo.getFieldJavaDoc(field, 0)} */ </#if> ${pojo.getFieldModifiers(field)} ${pojo.getJavaTypeName(field, jdk5)} ${field.name}<#if pojo.hasFieldInitializor(field, jdk5)> = ${pojo.getFieldInitialization(field, jdk5)}</#if>; -</#if></#foreach> \ No newline at end of file +</#if> +</#foreach> Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java 2006-02-28 14:00:48 UTC (rev 9513) @@ -61,9 +61,9 @@ executeTarget("testantannotationcfg"); } - /*public void testHbm2JavaConfiguration() { + public void testHbm2JavaConfiguration() { executeTarget("testanthbm2java"); - }*/ + } public void testHbm2JavaEJB3Configuration() { executeTarget("testantejb3hbm2java"); Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/SeamAntTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/SeamAntTest.java 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/SeamAntTest.java 2006-02-28 14:00:48 UTC (rev 9513) @@ -24,8 +24,6 @@ * */ public class SeamAntTest extends BuildFileTestCase { - - private String property; public SeamAntTest(String name) { super(name); @@ -43,7 +41,7 @@ configureProject("src/testsupport/seamtest-build.xml"); } - public void testConfiguration() { + public void testCrudGeneration() { executeTarget("generate-crud"); File baseDir = new File(project.getProperty("destdir")); @@ -75,6 +73,7 @@ List jars = new ArrayList(); jars.add("ejb3-persistence.jar"); jars.add("jboss-ejb3x.jar"); + jars.add("jboss-annotations-ejb3.jar"); jars.add("hibernate-annotations.jar"); jars.add("jboss-seam.jar"); jars.add("myfaces-api.jar"); Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Constructors.hbm.xml =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Constructors.hbm.xml 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Constructors.hbm.xml 2006-02-28 14:00:48 UTC (rev 9513) @@ -36,6 +36,9 @@ <property name="brand" type="string" not-null="true"/> + <!-- HBX-607, formula not in full constructor --> + <property name="value" type="string" formula="42"/> + <set name="employees"> <key> <column name="ceo_id"/> Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Customer.hbm.xml =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Customer.hbm.xml 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Customer.hbm.xml 2006-02-28 14:00:48 UTC (rev 9513) @@ -70,9 +70,10 @@ <property name="postcode" type="string" column="postcode" not-null="true" /> </composite-element> </set> - --> + --> <component name="test" class="FatherComponent"> + <parent name="testParent"/> <property name="testattrib" type="string" /> <component name="child" class="ChildComponent"> <property name="childattrib" type="string" /> Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/hbm2x/Hbm2JavaTest.java 2006-02-28 14:00:48 UTC (rev 9513) @@ -17,6 +17,7 @@ import org.hibernate.mapping.Property; import org.hibernate.mapping.RootClass; import org.hibernate.mapping.SingleTableSubclass; +import org.hibernate.mapping.Value; import org.hibernate.tool.NonReflectiveTestCase; import org.hibernate.tool.hbm2x.pojo.BasicPOJOClass; import org.hibernate.tool.hbm2x.pojo.ImportContext; @@ -84,6 +85,14 @@ TestHelper.deleteDir( file ); } + /** HBX-606 */ + public void testParentComponentFailureExpected() { + + File file = new File( getOutputDir(), "org/hibernate/tool/hbm2x/FatherComponent.java" ); + + assertEquals("test", findFirstString("testParent", file)); + } + public void testNoVelocityLeftOvers() { assertEquals( null, findFirstString( "$", new File( getOutputDir(), Modified: trunk/HibernateExt/tools/src/test5.0/org/hibernate/tool/hbm2x/Hbm2JavaEjb3ForJDK50Test.java =================================================================== --- trunk/HibernateExt/tools/src/test5.0/org/hibernate/tool/hbm2x/Hbm2JavaEjb3ForJDK50Test.java 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/test5.0/org/hibernate/tool/hbm2x/Hbm2JavaEjb3ForJDK50Test.java 2006-02-28 14:00:48 UTC (rev 9513) @@ -1,4 +1,3 @@ -//$Id$ package org.hibernate.tool.hbm2x; import java.io.File; Modified: trunk/HibernateExt/tools/src/testsupport/anttest-build.xml =================================================================== --- trunk/HibernateExt/tools/src/testsupport/anttest-build.xml 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/testsupport/anttest-build.xml 2006-02-28 14:00:48 UTC (rev 9513) @@ -41,7 +41,6 @@ <hbm2ddl drop="false" create="true" export="false" outputfilename="onlycreate.sql" format="true"/> <hbm2ddl drop="true" create="false" export="false" outputfilename="onlydrop.sql" format="true"/> <hbm2ddl drop="true" create="true" export="false" outputfilename="dropandcreate.sql" format="true"/> - <hbm2ddl update="true" outputfilename="updateonly.sql" format="true"/> <hbm2doc/> </hibernatetool> Modified: trunk/HibernateExt/tools/src/testsupport/seamtest-build.xml =================================================================== --- trunk/HibernateExt/tools/src/testsupport/seamtest-build.xml 2006-02-28 13:56:39 UTC (rev 9512) +++ trunk/HibernateExt/tools/src/testsupport/seamtest-build.xml 2006-02-28 14:00:48 UTC (rev 9513) @@ -36,9 +36,10 @@ userid="sa" password="" > - drop table ISSUE if exists - create table ISSUE ( ID int not null, DATETIME timestamp, TEXT varchar(200), USER varchar(30), primary key (ID) ); --- CREATE TABLE comments ( id int not null, datetime timestamp, text varchar(200), user varchar(30), primary key (id) ); + drop table comment if exists; + drop table ISSUE if exists; + create table ISSUE ( ID int not null, DATETIME timestamp, TEXT varchar(200), USER varchar(30), primary key (ID) ); + CREATE TABLE comment ( id int not null, issue_id int not null, datetime timestamp, text varchar(200), user varchar(30), primary key (id), constraint issue_comments foreign key (issue_id) references ISSUE ); SHUTDOWN; </sql> </target> |
From: <hib...@li...> - 2006-02-28 13:56:44
|
Author: max...@jb... Date: 2006-02-28 08:56:39 -0500 (Tue, 28 Feb 2006) New Revision: 9512 Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/TemplateHelper.java Log: better exception message Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/TemplateHelper.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/TemplateHelper.java 2006-02-28 11:49:51 UTC (rev 9511) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/TemplateHelper.java 2006-02-28 13:56:39 UTC (rev 9512) @@ -246,7 +246,7 @@ throw new ExporterException("Error while processing template " + templateName, e); } catch (TemplateException te) { - throw new ExporterException("Error while processing template string", te); + throw new ExporterException("Error while processing template " + templateName, te); } catch (Exception e) { throw new ExporterException("Error while processing template " + templateName, e); |
From: <hib...@li...> - 2006-02-28 11:49:55
|
Author: max...@jb... Date: 2006-02-28 06:49:51 -0500 (Tue, 28 Feb 2006) New Revision: 9511 Removed: trunk/HibernateExt/org.hibernate.eclipse.console/ Log: removing plugins |
From: <hib...@li...> - 2006-02-28 11:49:22
|
Author: max...@jb... Date: 2006-02-28 06:49:15 -0500 (Tue, 28 Feb 2006) New Revision: 9510 Removed: trunk/HibernateExt/org.hibernate.eclipse/ Log: removing plugins |
From: <hib...@li...> - 2006-02-28 11:48:57
|
Author: max...@jb... Date: 2006-02-28 06:48:54 -0500 (Tue, 28 Feb 2006) New Revision: 9509 Removed: trunk/HibernateExt/org.hibernate.eclipse.feature/ Log: removing plugins |
From: <hib...@li...> - 2006-02-28 11:48:37
|
Author: max...@jb... Date: 2006-02-28 06:48:33 -0500 (Tue, 28 Feb 2006) New Revision: 9508 Removed: trunk/HibernateExt/org.hibernate.eclipse.help/ Log: removing plugins |
From: <hib...@li...> - 2006-02-28 11:48:24
|
Author: max...@jb... Date: 2006-02-28 06:48:10 -0500 (Tue, 28 Feb 2006) New Revision: 9507 Removed: trunk/HibernateExt/org.hibernate.eclipse.mapper/ Log: removing plugins |
From: <hib...@li...> - 2006-02-28 11:47:47
|
Author: max...@jb... Date: 2006-02-28 06:47:42 -0500 (Tue, 28 Feb 2006) New Revision: 9506 Removed: trunk/HibernateExt/org.hibernate.eclipse.console.test/ Log: removing plugins |
From: <hib...@li...> - 2006-02-28 11:47:27
|
Author: max...@jb... Date: 2006-02-28 06:47:24 -0500 (Tue, 28 Feb 2006) New Revision: 9505 Removed: trunk/HibernateExt/org.hibernate.eclipse.releng/ Log: removing plugins |
From: <hib...@li...> - 2006-02-28 11:47:07
|
Author: max...@jb... Date: 2006-02-28 06:47:03 -0500 (Tue, 28 Feb 2006) New Revision: 9504 Removed: trunk/HibernateExt/org.hibernate.eclipse.test.feature/ Log: removing plugins |
From: <hib...@li...> - 2006-02-28 11:45:51
|
Author: max...@jb... Date: 2006-02-28 06:45:46 -0500 (Tue, 28 Feb 2006) New Revision: 9503 Removed: trunk/HibernateExt/org.hibernate.eclipse.updatesite/ Log: removing plugins |