Can you @Filter a Seam @Entity?
robjellinghaus Jun 29, 2006 12:51 AMWorking with my Seam example, just ported to 1.0.1. Originally derived from the noejb example, which now became the Hibernate example.
I'm trying to declare a @Filter on one of my @Entities:
@Entity
@Name("blogPost")
@Filter(name="headOnly", condition="replicatedChangeset is null")
public class BlogPostImpl implements BlogPost, Serializable {
 private Long id;
...
 @Id @GeneratedValue
 public Long getId()
 {
 return id;
 }
...
 private Changeset replicatedChangeset;
 /**
 * The changeset in which this object was created. Null for head objects; set for all
 * versioned copies.
 */
 @ManyToOne
 public Changeset getReplicatedChangeset ()
 {
 return replicatedChangeset;
 }
...
}And I'm trying to use it in a query like this (yes, this is basically trying to make a version-tracking blog-posting system):
new Script() {
...
 private Session database;
 @Override
 protected void updateModelValues()
 {
 database = (Session) Component.getInstance("database", true);
 assert database != null;
 }
 @Override
 protected void invokeApplication()
 {
...
 database.enableFilter("headOnly");
 List<BlogPostImpl> headBlogPosts = database.createQuery("from BlogPostImpl").list();
...
 }
 }.run();The exception I get is that the "headOnly" filter is not found:
[testng] FAILED: com.robjsoftware.replog.test.ChangesetTest.testChangeset() [testng] org.hibernate.HibernateException: No such filter configured [headOnly] [testng] at org.hibernate.impl.SessionFactoryImpl.getFilterDefinition(SessionFactoryImpl.java:962) [testng] at org.hibernate.impl.SessionImpl.enableFilter(SessionImpl.java:1025) [testng] at com.robjsoftware.replog.test.ChangesetTest$4.invokeApplication(ChangesetTest.java:127)
What am I missing? Is there any other magic I need to do to make @Filter work for a Seam @Entity? Are there any known examples of trying this? Should I even be expecting it to work? Should I try moving this to hibernate.cfg.xml (since I do *have* a hibernate.cfg.xml)?
The Hibernate startup debug spam mentions "Binding entity from annotated class: com.robjsoftware.replog.domain.BlogPostImpl" but doesn't mention any filter annotations.
Thanks very much -- I'm planning a bunch of aggressive weirdness with @Filters in this application, so it'll be a big bummer if Seam doesn't grok @Filter yet....
Cheers,
Rob
 
    