[hibernate-commits] Hibernate SVN: r14382 - in entitymanager/trunk/src: test/org/hibernate/ejb/test and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Feb 29 12:14:51 EST 2008


Author: epbernard
Date: 2008-02-29 12:14:51 -0500 (Fri, 29 Feb 2008)
New Revision: 14382

Modified:
   entitymanager/trunk/src/java/org/hibernate/ejb/AbstractEntityManagerImpl.java
   entitymanager/trunk/src/test/org/hibernate/ejb/test/QueryTest.java
Log:
EJB-341 Wrong named queries should not raise a PersistenceException

Modified: entitymanager/trunk/src/java/org/hibernate/ejb/AbstractEntityManagerImpl.java
===================================================================
--- entitymanager/trunk/src/java/org/hibernate/ejb/AbstractEntityManagerImpl.java	2008-02-28 19:42:08 UTC (rev 14381)
+++ entitymanager/trunk/src/java/org/hibernate/ejb/AbstractEntityManagerImpl.java	2008-02-29 17:14:51 UTC (rev 14382)
@@ -100,9 +100,16 @@
 
 	public Query createNamedQuery(String name) {
 		//adjustFlushMode();
+		org.hibernate.Query namedQuery;
 		try {
-			return new QueryImpl( getSession().getNamedQuery( name ), this );
+			namedQuery = getSession().getNamedQuery( name );
 		}
+		catch (MappingException e) {
+			throw new IllegalArgumentException("Named query not found: " + name);
+		}
+		try {
+			return new QueryImpl( namedQuery, this );
+		}
 		catch (HibernateException he) {
 			throwPersistenceException( he );
 			return null;

Modified: entitymanager/trunk/src/test/org/hibernate/ejb/test/QueryTest.java
===================================================================
--- entitymanager/trunk/src/test/org/hibernate/ejb/test/QueryTest.java	2008-02-28 19:42:08 UTC (rev 14381)
+++ entitymanager/trunk/src/test/org/hibernate/ejb/test/QueryTest.java	2008-02-29 17:14:51 UTC (rev 14382)
@@ -346,6 +346,30 @@
 
 	}
 
+	public void testUnavailableNamedQuery() throws Exception {
+		Item item = new Item( "Mouse", "Micro$oft mouse" );
+
+		EntityManager em = factory.createEntityManager();
+		em.getTransaction().begin();
+		em.persist( item );
+		try {
+			em.createNamedQuery( "wrong name" );
+			fail("Wrong named query should raise an exception");
+		}
+		catch (IllegalArgumentException e) {
+			//success
+		}
+		em.getTransaction().commit();
+
+		em.clear();
+
+		em.getTransaction().begin();
+		em.remove( em.find( Item.class, item.getName() ) );
+		em.getTransaction().commit();
+		em.close();
+
+	}
+
 	public Class[] getAnnotatedClasses() {
 		return new Class[]{
 				Item.class,




More information about the hibernate-commits mailing list