diff --git a/entitymanager/src/main/java/org/hibernate/ejb/criteria/path/AbstractFromImpl.java b/entitymanager/src/main/java/org/hibernate/ejb/criteria/path/AbstractFromImpl.java index 2d2f08960b..e8f0ec40c9 100644 --- a/entitymanager/src/main/java/org/hibernate/ejb/criteria/path/AbstractFromImpl.java +++ b/entitymanager/src/main/java/org/hibernate/ejb/criteria/path/AbstractFromImpl.java @@ -118,6 +118,11 @@ public String renderProjection(CriteriaQueryCompiler.RenderingContext renderingC return getAlias(); } + @Override + public String render(CriteriaQueryCompiler.RenderingContext renderingContext) { + return renderProjection( renderingContext ); + } + /** * {@inheritDoc} */ diff --git a/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java b/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java index 5995f613f3..0c0a057af3 100644 --- a/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java +++ b/entitymanager/src/test/java/org/hibernate/ejb/criteria/basic/ExpressionsTest.java @@ -38,8 +38,10 @@ import org.hibernate.Query; import org.hibernate.ejb.metamodel.AbstractMetamodelSpecificTest; +import org.hibernate.ejb.metamodel.Phone; import org.hibernate.ejb.metamodel.Product; import org.hibernate.ejb.metamodel.Product_; +import org.hibernate.ejb.test.mapping.Phone_; import org.hibernate.impl.AbstractQueryImpl; /** @@ -285,4 +287,18 @@ public void testInExpressionVarargs() { em.getTransaction().commit(); em.close(); } + + public void testJoinedElementCollectionValuesInTupleList() { + EntityManager em = getOrCreateEntityManager(); + em.getTransaction().begin(); + CriteriaQuery criteria = builder.createQuery( Phone.class ); + Root from = criteria.from( Phone.class ); + criteria.where( + from.join( "types" ) + .in( Collections.singletonList( Phone.Type.WORK ) ) + ); + em.createQuery( criteria ).getResultList(); + em.getTransaction().commit(); + em.close(); + } } diff --git a/entitymanager/src/test/java/org/hibernate/ejb/metamodel/Phone.java b/entitymanager/src/test/java/org/hibernate/ejb/metamodel/Phone.java index 273d175af1..9b5b5054c9 100644 --- a/entitymanager/src/test/java/org/hibernate/ejb/metamodel/Phone.java +++ b/entitymanager/src/test/java/org/hibernate/ejb/metamodel/Phone.java @@ -23,7 +23,9 @@ */ package org.hibernate.ejb.metamodel; +import java.util.Set; import javax.persistence.Column; +import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; @@ -38,10 +40,13 @@ @Entity @Table(name = "PHONE_TABLE") public class Phone implements java.io.Serializable { + public enum Type { LAND_LINE, CELL, FAX, WORK, HOME } + private String id; private String area; private String number; private Address address; + private Set types; public Phone() { } @@ -96,4 +101,13 @@ public Address getAddress() { public void setAddress(Address a) { address = a; } + + @ElementCollection + public Set getTypes() { + return types; + } + + public void setTypes(Set types) { + this.types = types; + } } \ No newline at end of file diff --git a/entitymanager/src/test/resources/log4j.properties b/entitymanager/src/test/resources/log4j.properties index 7c6bbe12ea..29d8ee3281 100755 --- a/entitymanager/src/test/resources/log4j.properties +++ b/entitymanager/src/test/resources/log4j.properties @@ -1,23 +1,8 @@ -### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n -### direct messages to file hibernate.log ### -log4j.appender.file=org.apache.log4j.FileAppender -log4j.appender.file.File=hibernate.log -log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n - -### direct messages to socket - chainsaw ### -log4j.appender.socket=org.apache.log4j.net.SocketAppender -log4j.appender.socket.remoteHost=localhost -log4j.appender.socket.port=4560 -log4j.appender.socket.locationInfo=true - -### set log levels - for more verbose logging change 'info' to 'debug' ### - log4j.rootLogger=warn, stdout log4j.logger.org.hibernate=debug