问题
Please help me to find out the issue.i am a beginner in spring hibernate and using Spring 3 and hibernate 4 in my project, i want to use namedQuery in my application. I have created a named query to fetch data from multiple table using join, but i am getting some issue please correct me if i am doing something wrong here. Vode is below The Entity class:-
@Embeddable
@NamedQuery(
name = "findAllProduct",
query = "SELECT PVPOL.pincode,PO.description"
+" FROM product_vendor_payment_option_location PVPOL"
+" INNER JOIN PVPOL.Payement_Id PID"
+" INNER JOIN PVPOL.pincode PC"
+" INNER JOIN PVPOL.paymentOptions PO"
+" where PVPOL.id = :Payement_Id"
)
public class PRODUCT_VENDOR_PAYMENT_OPTION_LOCATION extends Entity {
@Column(name="id")
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="id")
private Collection<Product_Catalog_Vendor> Payement_Id;
@Column(name="pincode_id")
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="PINCODE_ID")
private Collection<Pincodes> pincode;
@Column(name = "payment_options")
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="payment_options")
private Set<Payment_Options> paymentOptions;
//getters and setters here
}
These are my tables from where i want to fetch the data:-
CREATE TABLE PRODUCT_VENDOR_PAYMENT_OPTION_LOCATION (
ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Payment_Id INTEGER UNSIGNED NOT NULL ,
PINCODE_ID INTEGER UNSIGNED NOT NULL ,
PAYMENT_OPTIONS INTEGER UNSIGNED NOT NULL ,
PRIMARY KEY(ID,Payment_Id, PINCODE_ID) ,
INDEX PRODUCT_VENDOR_PAYMENT_OPTION_LOCATION_FKIndex1(PAYMENT_OPTIONS),
INDEX PRODUCT_VENDOR_PAYMENT_OPTION_LOCATION_FKIndex2(Payment_Id) ,
INDEX PRODUCT_VENDOR_PAYMENT_OPTION_LOCATION_FKIndex3(PINCODE_ID),
FOREIGN KEY(PAYMENT_OPTIONS)
REFERENCES PAYEMENT_OPTIONS(PAYMENT_OPTIONS)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(Payment_Id)
REFERENCES PRODUCT_CATALOG_VENDOR(Id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(PINCODE_ID)
REFERENCES PINCODES(PINCODE_ID)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
CREATE TABLE PAYEMENT_OPTIONS ( PAYMENT_OPTIONS INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Description VARCHAR(500) NULL ,
PRIMARY KEY(PAYMENT_OPTIONS));
CREATE TABLE PRODUCT_CATALOG_VENDOR (
Id INTEGER UNSIGNED NOT NULL , Prefilled_Response_Id INTEGER UNSIGNED NULL ,
Product_Catalog_Id INTEGER UNSIGNED NOT NULL , User_Id INTEGER UNSIGNED NOT NULL ,
Aud_Create_Time TIMESTAMP NOT NULL , Aud_Update_Time TIMESTAMP NOT NULL ,
PRIMARY KEY(Id) ,INDEX PRODUCT_CATALOG_VENDOR_FKIndex1(Product_Catalog_Id) ,
INDEX PRODUCT_CATALOG_VENDOR_FKIndex2(User_Id) ,INDEX PRODUCT_CATALOG_VENDOR_FKIndex3(Prefilled_Response_Id), FOREIGN KEY(Product_Catalog_Id)
REFERENCES PRODUCT_CATALOG(Product_Catalog_Id)
ON DELETE CASCADE
ON UPDATE NO ACTION, FOREIGN KEY(User_Id) REFERENCES VENDOR(User_Id)
ON DELETE CASCADE ON UPDATE NO ACTION, FOREIGN KEY(Prefilled_Response_Id)
REFERENCES PREFILLED_RESPONSE(Prefilled_Response_Id) ON DELETE NO ACTION
ON UPDATE NO ACTION);
CREATE TABLE PINCODES (
PINCODE_ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
PINCODE INTEGER UNSIGNED NOT NULL, Description INTEGER UNSIGNED NULL,
PRIMARY KEY(PINCODE_ID));
In DAO class i am calling namedQuery through:-
Session session = sessionFactory.getCurrentSession();
Query query=(Query) session.getNamedQuery("findAllProduct");
when i am running after deployement , i am getting below error in logs:-
10:27:36,139 INFO [org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping] (MSC service thread 1-2) Root mapping to handler 'productController'
10:27:36,626 INFO [org.springframework.web.servlet.DispatcherServlet] (MSC service thread 1-2) FrameworkServlet 'product': initialization completed in 3979 ms
10:27:36,633 INFO [org.jboss.web] (MSC service thread 1-2) registering web context: /usermanagement
10:27:36,636 INFO [org.jboss.as] (MSC service thread 1-4) JBoss AS 7.0.2.Final "Arc" started in 8346ms - Started 182 of 239 services (57 services are passive or on-demand)
10:27:36,670 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "usermanagement.war"
10:27:52,987 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/usermanagement].[product]] (http--127.0.0.1-8080-1) Servlet.service() for servlet product threw exception: org.hibernate.MappingException: Named query not known: findAllProduct
at org.hibernate.internal.AbstractSessionImpl.getNamedQuery(AbstractSessionImpl.java:154) [hibernate-core-4.1.10.Final.jar:]
at org.hibernate.internal.SessionImpl.getNamedQuery(SessionImpl.java:1343) [hibernate-core-4.1.10.Final.jar:]
at com.ecom.data.access.product.ProductDaoImpl.getAllProduct(ProductDaoImpl.java:36) [classes:]
at com.ecom.data.access.transaction.ProductServiceImpl.getAllProduct(ProductServiceImpl.java:30) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_43]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_43]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_43]
at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_43]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) [spring-aop-3.2.2.RELEASE.jar:]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) [spring-aop-3.2.2.RELEASE.jar:]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) [spring-aop-3.2.2.RELEASE.jar:]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) [spring-tx-3.2.2.RELEASE.jar:]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) [spring-tx-3.2.2.RELEASE.jar:]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) [spring-tx-3.2.2.RELEASE.jar:]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) [spring-aop-3.2.2.RELEASE.jar:]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) [spring-aop-3.2.2.RELEASE.jar:]
at com.sun.proxy.$Proxy35.getAllProduct(Unknown Source)
at com.ecom.data.access.controller.ProductController.listProducts(ProductController.java:24) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_43]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_43]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_43]
at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_43]
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) [spring-web-3.2.2.RELEASE.jar:]
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440) [spring-webmvc-3.2.2.RELEASE.jar:]
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) [spring-webmvc-3.2.2.RELEASE.jar:]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) [spring-webmvc-3.2.2.RELEASE.jar:]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) [spring-webmvc-3.2.2.RELEASE.jar:]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) [spring-webmvc-3.2.2.RELEASE.jar:]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) [spring-webmvc-3.2.2.RELEASE.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) [spring-webmvc-3.2.2.RELEASE.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:139) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_43]
Looking forward for some suggestions...
回答1:
I suppose you should put your @NamedQuery
on Entity (where you have @Entity
but not @Embeddable
).
Read here: http://docs.oracle.com/javaee/6/api/javax/persistence/NamedQuery.html
来源:https://stackoverflow.com/questions/18118440/org-hibernate-mappingexception-named-query-not-known