Tabelle ist nicht zu schaffen mit JPA 2.0
Ich bin mit JPA 2.0 mit Netbeans. Ich bin mit Entitäten. Wenn meine Datenbank ist keine Tabelle, dann sollte es Tabelle erstellen von Entitäten. Hier ist mein code
public class BankServlet extends HttpServlet {
@EJB
private BankServiceBeanRemote bankServiceBean;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int custId = Integer.parseInt(request.getParameter("id"));
bankServiceBean.createCustomers();
Customer cust = bankServiceBean.findCustomer(custId);
response.setContentType("text/html;charset=UTF-8");
....
} //end of processRequest
} //end of class BankServlet
Hier ist meine Bohne
@Stateless
public class BankServiceBean implements BankServiceBeanRemote {
@PersistenceContext(unitName = "Bank_JPA-ejbPU")
private EntityManager em;
@Override
public void createCustomers() {
Referee r1 = new Referee();
r1.setId(1);
r1.setName("SIR JOHN DEED");
r1.setComments("JUDGE");
em.persist(r1);
Customer c1 = new Customer();
c1.setId(1);
c1.setFirstName("SIMON");
c1.setLastName("KING");
c1.setReferee(r1);
......
}
} //end of class BankServiceBean
Hier ist mein Schiedsrichter-Einheit
@Entity
public class Referee implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String comments;
public Referee() {
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
//other getter setters
} //end of class Referee
Wenn ich den code bekomme ich folgende exception
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dbbank.referee' doesn't exist
Error Code: 1146
Call: INSERT INTO REFEREE (ID, NAME, COMMENTS) VALUES (?, ?, ?)
bind => [3, MICHAEL ELLIS, MAJOR SHAREHOLDER OF THIS BANK]
Query: InsertObjectQuery(pk.mazars.basitMahmood.entity.Referee[id=3])
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:324)
Wenn die Tabelle doesnot existiert, dann es sollte create table automatisch. Mache ich etwas falsch?
Danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Annahmen sind falsch. Tabellen sind nicht magisch angelegt, falls Sie nicht existieren. Die meisten Anwendungen verwenden die vorhandenen Datenbanken.
EclipseLink kann erstellen Sie das schema für Sie, aber es ist nicht der Standard. Lesen auf dieser Seite zu wissen, wie um diese Funktion zu aktivieren:
Sollten Sie Ihre table generation strategy in persistence.xml.
fügen Sie einfach diese Zeilen an den persistence.xml Datei :
Hier ist ein snippet hinzufügen, um Ihre persistence.xml um openjpa erstellen von Tabellen für Sie. Dieses kommt in handliches, wenn dabei die in-container unit tests mit openejb mit einer in-memory Datenbank wie HyperSQL.