Я разрабатываю доказательство концепции, в которой я создаю сущности JPA в динамическом веб-проекте и используя сервлет для извлечения информации. Я развертываю это приложение в SAP NW Java AS. Пожалуйста, проигнорируйте имя odata в нижеприведенных фрагментах кода, так как оно не имеет ничего общего с odata.Ошибка JPA: без eclipselink
Я получаю ниже ошибки:
WebServletException: Веб-контейнер не удалось найти ресурс необходимо для инъекций, следующий класс [com.EXIDVPServFactory] не может быть введен в эксплуатацию.
Вызванный: java.lang.RuntimeException: Блок живучесть не согласуется со схемой базы данных: Ошибка на сущности >> model.ZaeExidvp < <:. В таблице >> ZAE_EXIDVP < < не существует **
Мой persistence.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="XXXXXXX" xmlns:xsi="XXXXXX" xsi:schemaLocation="XXXXXXXX http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="basicodata" transaction-type="RESOURCE_LOCAL">
<provider>javax.persistence.PersistenceProvider</provider>
<class>model.ZaeExidvp</class>
<class>model.ZaeExidvpPK</class>
<properties>
<property name="javax.persistence.jdbc.url" value="XXXXXXXXXXXX"/>
<property name="javax.persistence.jdbc.user" value="sapsr3db"/>
<property name="javax.persistence.jdbc.password" value="XXXXXX"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
</properties>
</persistence-unit>
</persistence>
сервлет, который я использую это:
package com;
import java.io.IOException;
import model.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.persistence.*;
/**
* Servlet implementation class EXIDVPServFactory
*/
public class EXIDVPServFactory extends HttpServlet {
//@PersistenceUnit (unitName = "basicodata")
private static final String PERSISTENCE_UNIT_NAME = "basicodata";
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public EXIDVPServFactory() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//EntityManager em = emf.createEntityManager();
EntityManagerFactory emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager em = emf.createEntityManager();
// ODataJPAContext oDatJPAContext = this.getODataJPAContext();
String aufnr = request.getParameter("aufnr");
ZaeExidvp exidvp = em.find(ZaeExidvp.class, aufnr);
response.getOutputStream().print(exidvp.getId().toString());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
КЛАСС ZAE_EXIDVP (Entity объекта)
package model;
import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* The persistent class for the ZAE_EXIDVP database table.
*
*/
@Entity
@Table(name="ZAE_EXIDVP")
public class ZaeExidvp implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private ZaeExidvpPK id;
public ZaeExidvp() {
}
public ZaeExidvpPK getId() {
return this.id;
}
public void setId(ZaeExidvpPK id) {
this.id = id;
}
}
Я создал простую HTML-страницу, которая будет посылать один aufnr идентификатор в качестве параметра Servlet. Пожалуйста, помогите мне в решении этого вопроса.
У вас есть таблица с указанным именем в базе данных? –
@PrasadKharkar Ему не нужно, пожалуйста, см. Мой ответ, JPA можно настроить для автоматического создания таблиц. Господь знает, почему это не стандартная конфигурация. – hd1
@ hd1 Я знаю, что это можно сделать Upvote от меня. Но всегда хорошо знать, что именно происходит в бэкэнд :) и что, если позже он не захочет удалять таблицы при следующем запуске сервера? –