[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