1. 程式人生 > >Hibernate異常之命名查詢節點未找到

Hibernate異常之命名查詢節點未找到

red 異常 launcher next ren source contex per 標簽

異常信息:

 1 java.lang.IllegalArgumentException: No query defined for that name [salaryEmps]
 2     at org.hibernate.internal.AbstractSharedSessionContract.getNamedQuery(AbstractSharedSessionContract.java:578)
 3     at org.hibernate.internal.AbstractSharedSessionContract.getNamedQuery(AbstractSharedSessionContract.java:103)
4 at pw.fengya.test.TestHibernate.testNamedQuery(TestHibernate.java:59) 5 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 6 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 7 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
8 at java.lang.reflect.Method.invoke(Method.java:483) 9 at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:389) 10 at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115) 11 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:167)
12 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$201/5021240.execute(Unknown Source) 13 at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40) 14 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:163) 15 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:110) 16 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:57) 17 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:83) 18 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$133/1144648478.execute(Unknown Source) 19 at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66) 20 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77) 21 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92) 22 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$136/1681595665.accept(Unknown Source) 23 at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) 24 at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) 25 at java.util.Iterator.forEachRemaining(Iterator.java:116) 26 at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) 27 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) 28 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) 29 at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) 30 at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) 31 at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 32 at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) 33 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92) 34 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$133/1144648478.execute(Unknown Source) 35 at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66) 36 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77) 37 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92) 38 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$136/1681595665.accept(Unknown Source) 39 at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) 40 at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) 41 at java.util.Iterator.forEachRemaining(Iterator.java:116) 42 at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) 43 at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) 44 at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) 45 at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) 46 at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) 47 at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 48 at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) 49 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92) 50 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$$Lambda$133/1144648478.execute(Unknown Source) 51 at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66) 52 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77) 53 at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:51) 54 at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43) 55 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170) 56 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154) 57 at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90) 58 at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:86) 59 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 60 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) 61 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760) 62 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) 63 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) 64 Suppressed: org.hibernate.TransactionException: Transaction was marked for rollback only; cannot commit 65 at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:228) 66 at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68) 67 at pw.fengya.test.TestHibernate.destory(TestHibernate.java:48) 68 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 69 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 70 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 71 at java.lang.reflect.Method.invoke(Method.java:483) 72 at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:389) 73 at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115) 74 at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.invokeMethodInExtensionContext(ClassTestDescriptor.java:289) 75 at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$synthesizeAfterEachMethodAdapter$12(ClassTestDescriptor.java:281) 76 at org.junit.jupiter.engine.descriptor.ClassTestDescriptor$$Lambda$156/644166178.invokeAfterEachMethod(Unknown Source) 77 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$null$9(TestMethodTestDescriptor.java:208) 78 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$205/1991386317.execute(Unknown Source) 79 at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40) 80 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAllAfterMethodsOrCallbacks$13(TestMethodTestDescriptor.java:226) 81 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$203/1393112209.accept(Unknown Source) 82 at java.util.ArrayList.forEach(ArrayList.java:1234) 83 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAllAfterMethodsOrCallbacks(TestMethodTestDescriptor.java:224) 84 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAfterEachMethods(TestMethodTestDescriptor.java:207) 85 at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:114) 86 ... 48 more

學習Hibernate的命名查詢時突然拋出異常,最後檢查是由於自己太粗心了,query節點應該放在class節點外,與之同級

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 4 
 5 <hibernate-mapping package="pw.fengya.bean">
 6 
 7     <class name="Employee" table="t_EMPLOYEE">
 8 
 9         <id name="id" type="java.lang.Integer">
10             <column name="ID" />
11             <generator class="native" />
12         </id>
13 
14         <property name="name" type="java.lang.String">
15             <column name="NAME" />
16         </property>
17 
18         <property name="salary" type="float">
19             <column name="SALARY" />
20         </property>
21 
22         <property name="email" type="java.lang.String">
23             <column name="EMAIL" />
24         </property>
25 
26         <many-to-one name="dept" class="Deptartment" fetch="select">
27             <column name="DEPT_ID" />
28         </many-to-one>
29     
30         <query name="salaryEmps"><![CDATA[FROM Employee e WHERE e.salary > :minSal AND e.salary < :maxSal]]></query>
31     </class>
32 
33 </hibernate-mapping>

將query標簽拿出來,與class同級即可

Hibernate異常之命名查詢節點未找到