示例 Struts2 spring4.1 jpa/hibernate3.1.6 中的 java.lang.reflect.InvocationTargetException
Posted
技术标签:
【中文标题】示例 Struts2 spring4.1 jpa/hibernate3.1.6 中的 java.lang.reflect.InvocationTargetException【英文标题】:java.lang.reflect.InvocationTargetException in sample Struts2 spring4.1 jpa/hibernate3.1.6 【发布时间】:2014-12-01 18:05:09 【问题描述】:我正在尝试开发一个具有教学目的的基本应用程序,使用 Struts 2 + Spring 4.1 + JPA / Hibernate 3.6 和 Netbeans 8 作为 IDE。我设法毫无问题地创建和更新用户,但是当我尝试登录时,我得到java.lang.reflect.InvocationTargetException
,特别是在此说明中:
Query query = entityManager.createQuery(
"from User where username = :username")
.setParameter("username", username);
数据库已创建并在每个表中包含几条记录。
对于我为什么会发生这种情况,我将不胜感激。
这是我正在使用的库的列表:
Struts2 2.3.16 - asm-3.3.jar Struts2 2.3.16 - asm-commons-3.3.jar Struts2 2.3.16 - asm-tree-3.3.jar Struts2 2.3.16 - commons-fileupload-1.3.1.jar Struts2 2.3.16 - commons-io-2.2.jar Struts2 2.3.16 - commons-lang3-3.1.jar Struts2 2.3.16 - freemarker-2.3.19.jar Struts2 2.3.16 - javassist-3.11.0.GA.jar Struts2 2.3.16 - ognl-3.0.6.jar Struts2 2.3.16 - struts2-core-2.3.16.3.jar Struts2 2.3.16 - xwork-core-2.3.16.3.jar Struts2 2.3.16 - antlr-2.7.2.jar Struts2 2.3.16 - commons-collections-3.1.jar Struts2 2.3.16 - commons-logging-1.1.3.jar Struts2 2.3.16 - commons-logging-api.1.1.jar Struts2 2.3.16 - json-lib-2.3-jdk15.jar Struts2 2.3.16 - aopalliance-1.0.jar Struts2 2.3.16 - struts2-spring-plugin-2.3.16.3.jar Spring 4.1 - spring-aop-4.1.0.RELEASE.jar Spring 4.1 - spring-aspects-4.1.0.RELEASE.jar Spring 4.1 - spring-beans-4.1.0.RELEASE.jar Spring 4.1 - spring-context-4.1.0.RELEASE.jar Spring 4.1 - spring-context-support-4.1.0.RELEASE.jar Spring 4.1 - spring-core-4.1.0.RELEASE.jar Spring 4.1 - spring-expression-4.1.0.RELEASE.jar Spring 4.1 - spring-instrument-4.1.0.RELEASE.jar Spring 4.1 - spring-instrument-tomcat-4.1.0.RELEASE.jar Spring 4.1 - spring-jdbc-4.1.0.RELEASE.jar Spring 4.1 - spring-jms-4.1.0.RELEASE.jar Spring 4.1 - spring-messaging-4.1.0.RELEASE.jar Spring 4.1 - spring-orm-4.1.0.RELEASE.jar Spring 4.1 - spring-oxm-4.1.0.RELEASE.jar Spring 4.1 - spring-test-4.1.0.RELEASE.jar Spring 4.1 - spring-tx-4.1.0.RELEASE.jar Spring 4.1 - spring-web-4.1.0.RELEASE.jar Spring 4.1 - spring-webmvc-4.1.0.RELEASE.jar Spring 4.1 - spring-webmvc-portlet-4.1.0.RELEASE.jar Spring 4.1 - spring-websocket-4.1.0.RELEASE.jar Spring 4.1 - org-apache-commons-logging.jar Spring 4.1 - cglib-2.2.jar mysql JDBC 驱动程序-mysql-connector-java-5.1.23-bin.jar 休眠 4.3.6 - antlr-2.7.7.jar 休眠 4.3.6 - dom4j-1.6.1.jar 休眠 4.3.6 - hibernate-core-4.3.6.Final.jar Hibernate 4.3.6 - hibernate-jpa-2.1-api-1.0.0.Final.jar 休眠 4.3.6 - jandex-1.1.0.Final.jar 休眠 4.3.6 - javassist-3.18.1-GA.jar 休眠 4.3.6 - jboss-logging-3.1.3.GA.jar Hibernate 4.3.6 - jboss-logging-annotations-1.2.0.Beta1.jar Hibernate 4.3.6 - jboss-transaction-ap_1.2_spec-1.0.0.Final.jar Hibernate 4.3.6 - hibernate-entitymanager-4.3.6.Final.jarweb.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<filter>
<filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SpringOpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
applicationContext.xml
<?xml version='1.0' encoding='UTF-8' ?>
<!-- was: <?xml version="1.0" encoding="UTF-8"?> -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="portfolioservice" class="portfolio.utils.PortfolioServiceJPAImpl"></bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="MYSQL" />
<property name="showSql" value="true" />
</bean>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.gjt.mm.mysql.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/portfolio" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
struts.xml
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN""http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="Login" class="portfolio.Login">
<result type="redirectAction">
<param name="actionName">AdminPortfolio</param>
</result>
<result name="input">index.jsp</result>
</action>
<action name="AdminPortfolio">
<result>admin.jsp</result>
</action>
</package>
</struts>
Login.java
package portfolio;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Map;
import portfolio.utils.PortfolioServiceInterface;
import portfolio.utils.User;
public class Login extends ActionSupport
public Login()
@Override
public String execute() throws Exception
User user = getPortfolioService().authenticateUser(getUsername(), getPassword());
if (user == null)
/* User not valid, return to input page. */
return INPUT;
else
session.put("user", user);
return SUCCESS;
private String username;
private String password;
private Map session;
public String getPassword()
return password;
public void setPassword(String password)
this.password = password;
public String getUsername()
return username;
public void setUsername(String username)
this.username = username;
@Override
public void validate()
/* Check that fields are not empty */
if (getPassword().length() == 0)
addFieldError("password", getText("password.required"));
if (getUsername().length() == 0)
addFieldError("username", getText("username.required"));
/*
* Field with getter and setter for PortfolioService object, which will be injected
* via Spring.
*/
PortfolioServiceInterface portfolioService;
public PortfolioServiceInterface getPortfolioService()
return portfolioService;
public void setPortfolioService(PortfolioServiceInterface portfolioService)
this.portfolioService = portfolioService;
public void setSession(Map session)
this.session = session;
User.java
package portfolio.utils;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class User
private String username;
private String password;
private String firstName;
private String lastName;
private String email;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
private Set<Portfolio> portfolios = new HashSet<Portfolio>();
@Id
@GeneratedValue
private Long id;
public Long getId()
return id;
public void setId(Long id)
this.id = id;
public String getPassword()
return password;
public void setPassword(String password)
this.password = password;
public String getUsername()
return username;
public void setUsername(String username)
this.username = username;
public String getFirstName()
return firstName;
public void setFirstName(String firstName)
this.firstName = firstName;
public String getLastName()
return lastName;
public void setLastName(String lastName)
this.lastName = lastName;
public Set getPortfolios()
return portfolios;
public void setPortfolios(Set portfolios)
this.portfolios = portfolios;
public void addPortfolio(Portfolio portfolio)
portfolio.setOwner(this);
portfolios.add(portfolio);
public String getEmail()
return email;
public void setEmail(String email)
this.email = email;
Portfolio.java
package portfolio.utils;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
@Entity
public class Portfolio
private String name;
@ManyToOne(targetEntity = portfolio.utils.User.class, optional = false)
private User owner;
@Id
@GeneratedValue
private Long id;
@ElementCollection
@JoinTable(name = "portfolio_image", joinColumns = @JoinColumn(name = "portfolio_id"))
private Set<String> pics = new HashSet<String>();
public Set getPics()
return pics;
public void setPics(Set pics)
this.pics = pics;
public void addPic(String pic)
pics.add(pic);
public Long getId()
return id;
private void setId(Long id)
this.id = id;
public User getOwner()
return owner;
public void setOwner(User owner)
this.owner = owner;
public String getName()
return name;
public void setName(String name)
this.name = name;
PortfolioServiceJPAImpl.java
package portfolio.utils;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
public class PortfolioServiceJPAImpl implements PortfolioServiceInterface
private EntityManager entityManager;
@PersistenceContext
public void setEntityManager(EntityManager entityManager)
this.entityManager = entityManager;
@Override
public User authenticateUser(String username, String password)
System.out.println("Authenticating: username = " + username);
User validUser = null;
Query query = entityManager.createQuery("from User where username = :username").setParameter("username", username);
List result = query.getResultList();
if (!result.isEmpty())
User user = (User) result.get(0);
/* If the username mapped to a real user, check password */
if (user != null && user.getPassword().equals(password))
validUser = user;
return validUser;
Persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="punit">
<properties>
<property name="hibernate.hbm2ddl.auto" value="none"/>
</properties>
</persistence-unit>
</persistence>
例外:
SEVERE [http-nio-8084-exec-6] org.apache.struts2.dispatcher.Dispatcher.error Exception occurred during processing request: null
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:254)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:177)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
at org.hibernate.hql.internal.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:1023)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:3396)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1351)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4686)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:4159)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2104)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:796)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:597)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1800)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:342)
at com.sun.proxy.$Proxy23.createQuery(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:289)
at com.sun.proxy.$Proxy23.createQuery(Unknown Source)
at portfolio.utils.PortfolioServiceJPAImpl.authenticateUser(PortfolioServiceJPAImpl.java:22)
at portfolio.Login.execute(Login.java:16)
... 77 more
【问题讨论】:
java.lang.reflect.InvocationTargetException
表示在真正的异常之上有一个额外的层。您需要向下滚动堆栈跟踪,复制(全部)Caused By foo.bar.SomeException 并通过编辑将它们放入您的问题中
您将一半的代码库转储给我们,但忘记了最重要的,实际的堆栈跟踪......
不相关,但您是否真的同时使用 S2 和 Spring MVC?门户网站?
抱歉,我不得不删除一些文件,但已经删除了 Stacktrace。我正在为我的 POJO 的 DI 使用 spring 并简化休眠集成,这做得不好?库不正确? - 感谢您的快速回答
它们并非设计不佳,但可能不适用于您的设计不佳应用程序。
【参考方案1】:
解决了
感谢 Andrea Ligios 的评论,我更好地理解了真正的例外情况,并且已经解决了另一个问题。对不起,我把问题加倍了。 我有两个版本的库“antlr”,只需删除 struts antlr lib 并仅使用 antlr 的休眠。
感谢所有用户的 cmets。
【讨论】:
以上是关于示例 Struts2 spring4.1 jpa/hibernate3.1.6 中的 java.lang.reflect.InvocationTargetException的主要内容,如果未能解决你的问题,请参考以下文章
spring mvc4.1.6 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明
s2sh框架整合所需包,struts2+spring+hibernate所需的jar包下载
Struts2 JPA 验证错误如何转发到操作而不丢失 ActionErrors 消息?
Struts2 Spring JPA 整合时报错:No bean named 'entityManagerFactory' is defined ,请问各位是怎么解决