Hi Dain,

On Feb 15, 2007, at 4:57 PM, Dain Sundstrom wrote:

This is the only group of JPA developers, I know of so I'm going to ask here...

This was discussed at length in the expert group and the result is in the specification.

One thing I find strange is the namespace of NamedQueries. I declare NamedQueries using either an annotation on my entity or in xml using a named-query element nested in my entity element. This implies to me as a developer that the named queries are "owned" by the entity.

And yet, they are not. The namespace for queries is the entire PersistenceUnit.

But when you go to use a named query you must retrieve it using the EntityManager like this:

    Query query = entityManager.createNamedQuery(name);

Which means that the queries have a single global namespace. To make matters worse there doesn't seem to be any enforcement in the schema to make duplicate queries illegal.

This allows implementations to add value. ;-)

Is my understanding correct?

Yes. The best we could do is to make a recommendation that users guarantee uniqueness of names by prepending the entity name to the query name. As a side benefit, it's then possible to actually find the query to debug it.

Also, OpenJPA seems to be ok with duplicate query names and randomly pick which one to execute. I think we should at least print a warning if a user has duplicate named queries, or maybe fire an exception for duplicate names.

Sounds like added value to me. Care to file a JIRA with your observations and a request for your preferred implementation?

Craig

-dain

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:[EMAIL PROTECTED]
P.S. A good JDO? O, Gasp!

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to