[hibernate-commits] Hibernate SVN: r17829 - core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Oct 23 13:07:50 EDT 2009


Author: sharathjreddy
Date: 2009-10-23 13:07:50 -0400 (Fri, 23 Oct 2009)
New Revision: 17829

Added:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/Narrative.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/Topic.java
Modified:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/BasicHibernateAnnotationsTest.java
Log:
HHH-4288 Filters on collections are ignored

Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/BasicHibernateAnnotationsTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/BasicHibernateAnnotationsTest.java	2009-10-23 16:51:24 UTC (rev 17828)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/BasicHibernateAnnotationsTest.java	2009-10-23 17:07:50 UTC (rev 17829)
@@ -276,7 +276,41 @@
 		tx.commit();
 		s.close();
 	}
+	 
+	
+	public void testFilterOnCollection() {
+		
+		Session s = openSession();
+		Transaction tx = s.beginTransaction();
+		
+		Topic topic = new Topic();
+		Narrative n1 = new Narrative();
+		n1.setState("published");
+		topic.addNarrative(n1);
+		
+		Narrative n2 = new Narrative();
+		n2.setState("draft");
+		topic.addNarrative(n2);
+		
+		s.persist(topic);
+		tx.commit();
+		s.close();
 
+		s = openSession();
+		tx = s.beginTransaction();
+		topic = (Topic) s.load( Topic.class, topic.getId() );
+		
+		s.enableFilter("byState").setParameter("state", "published");
+		topic = (Topic) s.load( Topic.class, topic.getId() );
+		assertNotNull(topic); 
+		assertTrue(topic.getNarratives().size() == 1); 
+		assertEquals("published", topic.getNarratives().iterator().next().getState());
+		tx.commit();
+		s.close();
+		
+	} 
+	
+
 	public void testFilter() throws Exception {
 		Session s;
 		Transaction tx;
@@ -496,7 +530,9 @@
 				FormalLastName.class,
 				Car.class,
 				Peugot.class,
-				ContactDetails.class
+				ContactDetails.class,
+				Topic.class,
+				Narrative.class
 		};
 	}
 

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/Narrative.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/Narrative.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/Narrative.java	2009-10-23 17:07:50 UTC (rev 17829)
@@ -0,0 +1,66 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2009, Red Hat, Inc. and/or its affiliates or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat, Inc.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+
+package org.hibernate.test.annotations.entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+/**
+ * @author Sharath Reddy
+ */
+ at Entity
+public class Narrative {
+	
+	private int id;
+	private String state;
+	private Topic topic;
+	
+	@Id @GeneratedValue
+	public int getId() {
+		return id;
+	}
+	public void setId(int id) {
+		this.id = id;
+	}
+	
+	@Column(name="state")
+	public String getState() {
+		return state;
+	}
+	public void setState(String state) {
+		this.state = state;
+	}
+	
+	@ManyToOne
+	public Topic getTopic() {
+		return topic;
+	}
+	public void setTopic(Topic topic) {
+		this.topic = topic;
+	}
+}

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/Topic.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/Topic.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/entity/Topic.java	2009-10-23 17:07:50 UTC (rev 17829)
@@ -0,0 +1,72 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2009, Red Hat, Inc. and/or its affiliates or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat, Inc.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+
+package org.hibernate.test.annotations.entity;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
+import org.hibernate.annotations.ParamDef;
+
+/**
+ * @author Sharath Reddy
+ */
+ at FilterDef(name="byState", defaultCondition=":state = state",
+		parameters=@ParamDef(name="state",type="string"))
+ at Entity
+public class Topic {
+
+	@Id @GeneratedValue
+	private int id;
+	@OneToMany(mappedBy="topic", cascade=CascadeType.ALL)
+	@Filter(name="byState", condition=":state = state")
+	private Set<Narrative> narratives = new HashSet<Narrative>();
+	
+	
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public Set<Narrative> getNarratives() {
+		return narratives;
+	}
+
+	public void addNarrative(Narrative val) {
+		narratives.add(val);
+		val.setTopic(this);
+	} 
+
+}



More information about the hibernate-commits mailing list