Я пытаюсь создать новые данные, которые предоставляются в запросе json post с использованием jersey в базе данных (hibernate).Поэтому я создал новый динамический веб-проект и изменил его на maven.
В тестовом тестовом классе я мог создать нового пользователя и успешно сохранить его.Также хорошо подходит пост-запрос без какой-либо логики, который просто возвращает ok.Но если я опубликую развертывание и попытаюсь сохранить данные, я получаю сообщение об ошибке
javax.servlet.ServletException: javax.persistence.PersistenceException: Нет поставщика сохраняемости для EntityManager с именем shareiffUnit.
У меня такое ощущение, что некоторые настройки необходимо изменить или переместить.
UserAPI
@Path("/message")
public class UserAPI
{
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createUser(String inputStream) {
/*
* gson to map json to user class
*/
Gson gson = new Gson();
User newUser = new User();
newUser = gson.fromJson(inputStream, User.class);
/*
* trying to persist
*/
GenericDao dao = new GenericDao(User.class);
dao.create(newUser);
return Response.ok().build();
}
}
GenericDAO
public class GenericDao<E> implements IGenericDao<E> {
private Class<E> entityClass;
private final EntityManagerFactory enityManagerFactory = Persistence.createEntityManagerFactory("shareiffUnit");
private EntityManager entityManager = null;
private EntityManager getEntityManager() {
if(entityManager == null) {
return enityManagerFactory.createEntityManager();
}
return entityManager;
}
public GenericDao(Class<E> thisClass) {
this.entityClass = (Class<E>) thisClass;
}
public void setEntity(Class<E> entityClass) {
this.entityClass = entityClass;
}
public void create(E entity) {
getEntityManager().persist(entity);
}
public E read(Integer id) {
return getEntityManager().find(this.entityClass, id);
}
public void update(E entity) {
getEntityManager().refresh(entity);
}
public void delete(E entity) {
getEntityManager().remove(entity);
}
}
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="shareiffUnit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/docsheriffdb" />
<property name="connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
Есть ли здесь какая-либо конфигурация, которую я пропускаю?В файле войны (sheriff-0.0.1.war \ WEB-INF \ classes \ META-INF) есть файл persistence.xml.
Есть подсказки?