first, I want you to understand that hql and criteria both support
polymorphic querying.  In other words the thing from which you query
does not have to be mapped, and we will instead query from all entity
class which implement the named interface or extend from the named class
('from java.lang.Object' and 'from java.lang.Comparable' are both valid
queries).

So consider this just another restriction on the result set, find all
implementers of said interface/class.

Now, like I said I am fine with logging a warning in the case where you
try to query from a interface/class for which there are no entities
which are implementers.  But treating this any differently than a query
which returns zero results for other reasons is not valid imo.

Note that if this is important enough of a distinction to you you can
always perform the checking yourself using
org.hibernate.engine.SessionFactoryImplementor#getImplementors

So that if I were to try 'from java.lang.Comparable', but
( ( SessionFactoryImplementor )
factory ).getImplementors( java.lang.Comparable.class ) returned an
empty array you'd have this situation about whcih you are concerned.

-  

Steve Ebersole
Project Lead
http://hibernate.org
st...@hibernate.org

Principal Software Engineer
JBoss, a division of Red Hat
http://jboss.com
http://redhat.com
steve.ebers...@jboss.com
steve.ebers...@redhat.com


On Tue, 2009-02-17 at 10:57 -0800, Kevin Wong wrote:
> Hi Steve, thanks for the idea. Thoughts on returning null instead of an empty 
> list to differentiate an unsuccessful query versus a successful query that 
> returns no items.
> 
> Kevin 
> 
> ----- Original Message -----
> From: "Steve Ebersole" <st...@hibernate.org>
> To: "Kevin Wong" <siliconvalleyke...@gmail.com>
> Cc: hibernate-dev@lists.jboss.org
> Sent: Monday, February 16, 2009 7:18:23 AM GMT -08:00 US/Canada Pacific
> Subject: Re: [hibernate-dev] SessionImpl.list(CriteriaImpl criteria) returns 
> an empty list when no implementors exist
> 
> We could perhaps log.warn like we do for HQL, but throwing an exception
> is not a good idea imo.
> -  
> 
> Steve Ebersole
> Project Lead
> http://hibernate.org
> st...@hibernate.org
> 
> Principal Software Engineer
> JBoss, a division of Red Hat
> http://jboss.com
> http://redhat.com
> steve.ebers...@jboss.com
> steve.ebers...@redhat.com
> 
> 
> On Sat, 2009-02-14 at 09:29 -0800, Kevin Wong wrote:
> > Hi all, in using hibernate v31final SessionImpl.list(CriteriaImpl 
> > criteria), I had an issue where hibernate would return an empty list when 
> > no implementors existed for the entity name(I had mistaken deleted the 
> > entity from the hibernation configuration file). The confusion arose in 
> > that this was be mistaken for a query that would return no rows. In looking 
> > at the code, it appears that the results list is always initialized to an 
> > empty list rather than null. Likewise, no exception is thrown if the entity 
> > does not exists, whereas when using HQL an 
> > org.hibernate.hql.ast.QuerySyntaxException exception would be thrown. 
> > Opinions on initializing the results list to null or throwing an exception 
> > if the implementators exist for the desired entity?
> > 
> > Thanks
> > Kevin
> > _______________________________________________
> > hibernate-dev mailing list
> > hibernate-dev@lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> 
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev

_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to