EntityQuery restriction help
dloebbe Nov 7, 2007 9:34 AMHi 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