У меня есть подключения к моей базе данных. Я могу выполнить следующие действия без какого-либо вопроса:Нет базы данных Выбранная стойкость JPA
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/people", "root", "r00t");
PreparedStatement statement = (PreparedStatement) conn.prepareStatement("select * from users");
ResultSet result = statement.executeQuery();
Однако, после установки JPA и настойчивый класса, я всегда получаю «Нет базы данных не Selected» ошибку. Мне не кажется, что мне нужно настроить мою конфигурацию базы данных (MySQL подключен к Glassfish 3.1), иначе приведенный выше код не сработает.
Вызов делается:
SELECT USERNAME, FIRSTNAME, LASTNAME, PASSWORD, PERMISSION FROM users
Я попробовал этот вызов непосредственно в MySQL Workbench и он не работает.
Это один делает работу:
SELECT USERNAME, FIRSTNAME, LASTNAME, PASSWORD, PERMISSION FROM people.users
Я играл круглые и не могу показаться, чтобы добавить имя базы данных в любом месте («люди»). Вот то, что я до сих пор:
Использование EclipseLink 2.0.x
JPA implimentation: Отключить конфигурации библиотеки
соединения: Локальный MySQL (я моя база данных успешно подключена)
схемы: люди
Из моего сервлета:
package com.lowe.samples;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mysql.jdbc.PreparedStatement;
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@PersistenceContext
private EntityManager em;
public TestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<h1>DataBase Test:<h1>");
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/people", "root", "r00t");
PreparedStatement statement = (PreparedStatement) conn.prepareStatement("select * from users");
ResultSet result = statement.executeQuery();
// prep the table
out.print("<table border=\"5\">");
out.print("<tr>");
out.print("<td>UserName</td>");
out.print("<td>FirstName</td>");
out.print("<td>LastName</td>");
out.print("<td>Password</td>");
out.print("<td>Permission</td>");
out.print("</tr>");
while(result.next()) {
out.print("<tr>");
out.print("<td>" + result.getString(1) + "</td>");
out.print("<td>" + result.getString(2) + "</td>");
out.print("<td>" + result.getString(3) + "</td>");
out.print("<td>" + result.getString(4) + "</td>");
out.print("<td>" + result.getString(5) + "</td>");
out.print("</tr>");
}
out.print("</table>");
User u = (User)this.em.createNamedQuery("User.findAll").getResultList();
out.print("User Name: " + u.getFirstName());
} catch (ClassNotFoundException e) {
out.print("<h4>" + e.getMessage() + "</h4>");
e.printStackTrace();
} catch (SQLException e) {
out.print("<h4>" + e.getMessage() + "</h4>");
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
Мой класс настойчивость:
package com.lowe.samples;
import java.io.Serializable;
import javax.persistence.*;
/**
* The persistent class for the users database table.
*/
@Entity
@Table(name="users")
@NamedQuery(name="User.findAll", query="SELECT u FROM User u")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String userName;
private String firstName;
private String permission;
private String lastName;
private String password;
public User() {
}
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getPermission() {
return this.permission;
}
public void setPermission(String permission) {
this.permission = permission;
}
public String getLastName() {
return this.lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
persistence.xml
<?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="MyFriends">
<jta-data-source>jdbc/MySQLDataSource</jta-data-source>
<class>com.lowe.samples.User</class>
</persistence-unit>
</persistence>
Почему вы используете jdbc? – nachokk
@nachokk Я не следую. В отличие от? – maffo
, если вы используете jpa, вы делегируете эту работу поставщику, который вы используете. В вашем случае добавить. [jpa или jdbc] (http://stackoverflow.com/questions/11881548/jpa-or-jdbc-how-are-they-different) – nachokk