使用java配置在SpringMVC4WebApplication中的webserver(wildfly)上运行时,jpa命名和条件查询失败
我有以下使用java配置的简单SpringMVC4应用程序和JPA2.0使用java配置在SpringMVC4WebApplication中的webserver(wildfly)上运行时,jpa命名和条件查询失败,java,spring,hibernate,spring-mvc,jpa,Java,Spring,Hibernate,Spring Mvc,Jpa,我有以下使用java配置的简单SpringMVC4应用程序和JPA2.0 package com.somecompany.class; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; impor
package com.somecompany.class;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
@Configuration
@EnableWebMvc
@Import({JPAConfig.class, BeanConfig.class})
@ComponentScan("com.*")
public class AppConfig {
public InternalResourceViewResolver setupInternalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
}
AppConfig.java类包含应用程序配置逻辑
package com.somecompany.class;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver;
import org.springframework.instrument.classloading.LoadTimeWeaver;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages="com.somecompany.model.*")
public class JPAConfig {
@Bean
public JpaTransactionManager jpaTransactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager(getEntityManagerFactoryBean().getObject());
return transactionManager;
}
@Bean
public LocalContainerEntityManagerFactoryBean getEntityManagerFactoryBean() {
LocalContainerEntityManagerFactoryBean containerEntityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
containerEntityManagerFactoryBean.setDataSource(getDataSource());
containerEntityManagerFactoryBean.setPersistenceUnitName("pmd-web");
LoadTimeWeaver loadTimeWeaver = new InstrumentationLoadTimeWeaver();
containerEntityManagerFactoryBean.setLoadTimeWeaver(loadTimeWeaver);
return containerEntityManagerFactoryBean;
}
@Bean
public DataSource getDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/somedatabase");
dataSource.setUsername("someuser");
dataSource.setPassword("somepassword");
return dataSource;
}
}
java包含JPA配置的详细信息
package com.somecompany.class;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
public class WebAppInitializer implements WebApplicationInitializer{
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext webApplicationContext = new AnnotationConfigWebApplicationContext();
webApplicationContext.register(AppConfig.class);
webApplicationContext.setServletContext(servletContext);
webApplicationContext.refresh();
Dynamic dynamic = servletContext.addServlet("dispatcher", new DispatcherServlet(webApplicationContext));
dynamic.addMapping("/");
dynamic.setLoadOnStartup(1);
}
}
WebAppInitializer.java包含初始化web应用的逻辑
<?xml version="1.0" encoding="UTF-8" ?>
<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_2_0.xsd"
version="2.0">
<persistence-unit name="pmd-web">
<description>project metrics dashboard</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
</persistence>
服务级别如上所述
package com.somecompany.loginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import somecompany.VO.LoginVO;
import somecompany.mapper.LoginMapper;
import somecompany.model.PmdUser;
import com.somecompany.LoginDAO;
@Service
public class LoginService {
@Autowired
LoginDAO loginDAO;
@Autowired
LoginMapper loginMapper;
@Transactional
public LoginVO authenticateUser(LoginVO loginVO) {
PmdUser pmdUser = loginMapper.getpmdUserFromLoginVO(loginVO);
LoginVO loginVOFromDB = loginDAO.authenticateUser(pmdUser);
if (loginVO.getUserName().equalsIgnoreCase(loginVOFromDB.getUserName())) {
loginVO.setStatus(true);
}
return loginVO;
}
}
package com.somecompany.loginDAO;
import java.util.List;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.somecompany.VO.LoginVO;
import com.somecompany.baseDAO.BaseDao;
import com.somecompany.mapper.LoginMapper;
import com.somecompany.model.PmdUser;
package com.somecompany.baseDAO;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceException;
import javax.persistence.Query;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.springframework.stereotype.Repository;
@Repository
public abstract class BaseDao<E, K> {
/** The entity manager. */
@PersistenceContext(unitName = "pmd-web")
protected EntityManager entityManager;
/**
* Gets the entity manager.
*
* @return the entity manager
*/
public EntityManager getEntityManager() {
return entityManager;
}
/** The entity class. */
protected Class<E> entityClass;
/**
* Instantiates a new base DAO.
*/
@SuppressWarnings("unchecked")
public BaseDao() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[0];
}
public List<E> findByNamedQuery(final String name, Object... params) {
javax.persistence.Query query = getEntityManager().createNamedQuery(name);
for (int i = 0; i < params.length; i++) {
query.setParameter(i + 1, params[i]);
}
final List<E> result = (List<E>) query.getResultList();
return result;
}
}
@存储库
公共类LoginDAO扩展了BaseDao{
@Autowired
LoginMapper loginMapper;
public LoginVO authenticateUser(PmdUser pmdUser) {
PmdUser user = null;
LoginVO loginVO = null;
List<PmdUser> pmdUsers = findByNamedQuery("findByUsername", pmdUser.getUserName());
if (pmdUsers.size() > 0) {
user = pmdUsers.get(0);
loginVO = loginMapper.getLoginVOFromPmdUser(user);
}
return loginVO;
}
}
@Autowired
LoginMapper LoginMapper;
public LoginVO authenticateUser(PmdUser PmdUser){
PmdUser=null;
LoginVO LoginVO=null;
列出pmdUsers=findByNamedQuery(“findByUsername”,pmdUser.getUserName());
如果(pmdUsers.size()>0){
user=pmdUsers.get(0);
loginVO=loginMapper.GetLoginVofRompdUser(用户);
}
返回loginVO;
}
}
java类如上所述
package com.somecompany.loginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import somecompany.VO.LoginVO;
import somecompany.mapper.LoginMapper;
import somecompany.model.PmdUser;
import com.somecompany.LoginDAO;
@Service
public class LoginService {
@Autowired
LoginDAO loginDAO;
@Autowired
LoginMapper loginMapper;
@Transactional
public LoginVO authenticateUser(LoginVO loginVO) {
PmdUser pmdUser = loginMapper.getpmdUserFromLoginVO(loginVO);
LoginVO loginVOFromDB = loginDAO.authenticateUser(pmdUser);
if (loginVO.getUserName().equalsIgnoreCase(loginVOFromDB.getUserName())) {
loginVO.setStatus(true);
}
return loginVO;
}
}
package com.somecompany.loginDAO;
import java.util.List;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.somecompany.VO.LoginVO;
import com.somecompany.baseDAO.BaseDao;
import com.somecompany.mapper.LoginMapper;
import com.somecompany.model.PmdUser;
package com.somecompany.baseDAO;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceException;
import javax.persistence.Query;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.springframework.stereotype.Repository;
@Repository
public abstract class BaseDao<E, K> {
/** The entity manager. */
@PersistenceContext(unitName = "pmd-web")
protected EntityManager entityManager;
/**
* Gets the entity manager.
*
* @return the entity manager
*/
public EntityManager getEntityManager() {
return entityManager;
}
/** The entity class. */
protected Class<E> entityClass;
/**
* Instantiates a new base DAO.
*/
@SuppressWarnings("unchecked")
public BaseDao() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[0];
}
public List<E> findByNamedQuery(final String name, Object... params) {
javax.persistence.Query query = getEntityManager().createNamedQuery(name);
for (int i = 0; i < params.length; i++) {
query.setParameter(i + 1, params[i]);
}
final List<E> result = (List<E>) query.getResultList();
return result;
}
}
package com.somecompany.baseDAO;
导入java.lang.reflect.ParameterizedType;
导入java.util.List;
导入java.util.Map;
导入javax.persistence.EntityManager;
导入javax.persistence.PersistenceContext;
导入javax.persistence.PersistenceException;
导入javax.persistence.Query;
导入org.springframework.transaction.annotation.Transactional;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.hibernate.Criteria;
导入org.hibernate.Session;
导入org.hibernate.criteria.criteria;
导入org.hibernate.criteria.ProjectionList;
导入org.hibernate.criteria.Projections;
导入org.springframework.stereotype.Repository;
@存储库
公共抽象类BaseDao{
/**实体管理器*/
@PersistenceContext(unitName=“pmd web”)
受保护的实体管理器实体管理器;
/**
*获取实体管理器。
*
*@返回实体管理器
*/
公共实体管理器getEntityManager(){
返回实体管理器;
}
/**实体类*/
保护类实体类;
/**
*实例化一个新的基本DAO。
*/
@抑制警告(“未选中”)
公共数据库(){
ParameteredType genericSuperclass=(ParameteredType)getClass().getGenericSuperclass();
this.entityClass=(类)genericSuperclass.getActualTypeArguments()[0];
}
公共列表findByNamedQuery(最终字符串名称、对象…参数){
javax.persistence.Query Query=getEntityManager().createNamedQuery(名称);
对于(int i=0;i
在部署应用程序war并执行REST服务时,我得到了一个异常
Caused by: java.lang.IllegalArgumentException: No query defined for that name [findByUsername]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.buildQueryFromName(AbstractEntityManagerImpl.java:788) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:767) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) [rt.jar:1.8.0_65]
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:294) [spring-orm-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at com.sun.proxy.$Proxy92.createNamedQuery(Unknown Source)
at com.somecompany.baseDAO.BaseDao.findByNamedQuery(BaseDao.java:184) [classes:]
at com.somecompany.loginDAO.LoginDAO.authenticateUser(LoginDAO.java:26) [classes:]
at com.somecompany.loginDAO.LoginDAO$$FastClassBySpringCGLIB$$1909bedd.invoke(<generated>) [classes:]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) [spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651) [spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at com.somecompany.loginDAO.LoginDAO$$EnhancerBySpringCGLIB$$45d26c87.authenticateUser(<generated>) [classes:]
at com.somecompany.loginService.LoginService.authenticateUser(LoginService.java:25) [classes:]
at com.somecompany.loginService.LoginService$$FastClassBySpringCGLIB$$3de2163d.invoke(<generated>) [classes:]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) [spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720) [spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) [spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) [spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) [spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655) [spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at com.somecompany.loginService.LoginService$$EnhancerBySpringCGLIB$$912637e7.authenticateUser(<generated>) [classes:]
at com.somecompany.loginController.LoginController.authenticateUser(LoginController.java:22) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_65]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_65]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_65]
at java.lang.reflect.Method.invoke(Method.java:497) [rt.jar:1.8.0_65]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) [spring-web-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) [spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817) [spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731) [spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) [spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) [spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) [spring-webmvc-4.2.5.RELEASE.jar:4.2.5.RELEASE]
... 30 more
原因:java.lang.IllegalArgumentException:没有为该名称定义查询[findByUsername]
位于org.hibernate.jpa.spi.AbstractEntityManagerImpl.buildQueryFromName(AbstractEntityManagerImpl.java:788)[hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
在org.hibernate.jpa.spi.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:767)[hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)[rt.jar:1.8.0_65]
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[rt.jar:1.8.065]
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[rt.jar:1.8.065]
在java.lang.reflect.Method.invoke(Method.java:497)[rt.jar:1.8.0_65]
在org.springframework.orm.jpa.SharedEntityManagerCreator$SharedentityManagerInvoke(SharedEntityManagerCreator.java:294)[spring-orm-4.2.5.RELEASE.jar:4.2.5.RELEASE]
位于com.sun.proxy.$Proxy92.createNamedQuery(未知源)
在com.somecompany.baseDAO.baseDAO.findByNamedQuery(baseDAO.java:184)[类:]
在com.somecompany.loginDAO.loginDAO.authenticateUser(loginDAO.java:26)[类:]
在com.somecompany.loginDAO.loginDAO$$FastClassBySpringCGLIB$$1909bedd.invoke()[classes:]
在org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)[spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:651)[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
位于com.somecompany.loginDAO.loginDAO$$EnhancerBySpringCGLIB$$45d26c87.authenticateUser()[类:]
在com.somecompany.loginService.loginService.authenticateUser(loginService.java:25)[类:]
在com.somecompany.loginService.loginService$$FastClassBySpringCGLIB$$3de2163d.invoke()[classes:]
在org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)[spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE]
位于org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:157)[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
位于org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)[spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:281)[spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)[spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:179)[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
在org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)[spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
位于com.somecompany.loginService.loginService$$EnhancerBySpringCGLIB$$912637e7.authenticateUser()[类:]
在com.somecompany.loginController.loginController.authenticateUser(loginController.java:22)[classes:]
在sun.reflect.NativeMethodAccessorImpl.inv
containerEntityManagerFactoryBean.setPackagesToScan("com.somecomany.model");
@EnableJpaRepositories(basePackages="com.somecompany.model.*")
@EnableJpaRepositories(basePackages="com.somecompany")
<?xml version="1.0" encoding="UTF-8" ?>
<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_2_0.xsd"
version="2.0">
<persistence-unit name="pmd-web">
<description>project metrics dashboard</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
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_2_0.xsd">
<persistence-unit name="pmd-web">
<class>com.somecompany.model.PmdCustomer</class>
<class>com.somecompany.model.CustomerModule</class>
<class>com.somecompany.model.Modules</class>
<class>com.somecompany.model.Project</class>
<class>com.somecompany.model.ProjectRelease</class>
<class>com.somecompany.model.ProjectSprint</class>
<class>com.somecompany.model.Role</class>
<class>com.somecompany.model.User</class>
<class>com.somecompany.model.UserRole</class>
</persistence-unit>