[jboss-user] [EJB 3.0] - Embedded Object in Where Clause

hitman_in_wis do-not-reply at jboss.com
Tue Aug 29 17:29:53 EDT 2006


Is it possible to have an embedded object in the WHERE clause of a named query?

Say you have a Customer entity with an Embedded Name object. Name contains first_name and last_name.

If I write a named query accessing the pieces of Name directly, as in the below query, it works fine:
SELECT cust FROM Customer cust WHERE cust.name.first_name = :firstName AND cust.name.last_name = :lastName

However, if I try to access the entire Name object in the query, the query fails:
SELECT cust FROM Customer cust WHERE cust.name = :name

The funny thing is, if I put the server in DEBUG logging mode, and I attempt the second query, the query sent to the database is:
SELECT cust.field1, cust.field2 FROM customer cust WHERE (cust.first_name, cust.last_name) = ? To me, it looks like EJB is smart enough to realize that my Name object is an embedded object pointing to two fields in the customer table. However, it is not smart enough to realize that it needs to split up the parameter passed in to the named query into its respective pieces, since I get a SQL error stating "invalid relational operator".

Is this just how things are?

Thanks! 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3968231#3968231

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3968231



More information about the jboss-user mailing list