[jboss-user] [JBoss Seam] - EntityQuery restriction help
dloebbe
do-not-reply at jboss.com
Wed Nov 7 09:34:25 EST 2007
Hi all,
after searching the examples, documentation and forum for a solution I can't get the following use case to work:
I like to restrict the EntityQuery for object A by a related Object B. The Entities and search-dialogue are created by seam-gen. But I like to add a simple single select list of object of class b as search criteria.
My code:
| @Entity
| public class A implements Serializable
| {
| @Id
| @GeneratedValue(strategy = GenerationType.AUTO)
| private Long id;
|
| @ManyToOne(fetch = FetchType.EAGER)
| @JoinColumn(name = "bid", nullable = true)
| private B b;
| }
|
| @Entity
| public class B implements Serializable
| {
| @Id
| @GeneratedValue(strategy = GenerationType.AUTO)
| private Long id;
|
| @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "b")
| private Set<A> as;
| }
|
I like to create an EntityQuery, which searches / returns Objects of class A related to a specific Object of class B. One of my tries looks as follows:
| @Name("aList")
| public class AList extends EntityQuery
| {
| private static final String[] RESTRICTIONS = {
| "b = #{aList.a.b}", };
|
| @Override
| public String getEjbql()
| {
| return "select a from A as a join a.b as b";
| }
| }
|
Which produces an error like:
| Caused by: java.lang.IllegalArgumentException: argument type mismatch
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at javax.el.BeanELResolver.setValue(BeanELResolver.java:108)
| ... 58 more
|
Another one like this:
| @Name("aList")
| public class AList extends EntityQuery
| {
| private static final String[] RESTRICTIONS = {
| "a.b = #{aList.a.b}", };
|
| @Override
| public String getEjbql()
| {
| return "select a from A as a";
| }
| }
|
Resolves in the same. In both cases, the query parameter is set properly to an object of class B.
What am I doing wrong? Or can just someone provide an example on how to restrict EntityQueries by @ManyToOne-related Entities?
Thanks for help,
Daniel
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4102557#4102557
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4102557
More information about the jboss-user
mailing list