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