我正在努力学习JPA 这是我的实体文件。 Passenger.java
@Entity
public class Passenger implements Serializable{
public Passenger() {
super();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String firstName;
private String lastName;
}
我的persistence.xml在下面。
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
<persistence-unit name="JPA_POJO">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>java:/airlines</jta-data-source>
<class>com.airline.model.Passenger</class>
</persistence-unit>
我的servlet是这样的。
@WebServlet(name = "addPassenger")
public class addPassenger extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Passenger p = new Passenger();
// airline p = new airline();
p.setFirstName("ABC");
p.setLastName("XYZ");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA_POJO");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(p);
em.getTransaction().commit();
}
}
当我运行此代码时,我收到以下错误。
org.eclipse.persistence.exceptions.DatabaseException 内部异常:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表&#39; airline.passenger&#39;不存在 错误代码:1146 致电:INSERT INTO PASSENGER(ID,FIRSTNAME,LASTNAME)价值观(?,?,?)
据我所知,它试图连接到PASSENGER表而不是AIRLINE表。 我已经分配了指向航空公司表的数据源。事实上,我写了一个类文件airline.java,与Passenger.java基本相同,当我在我的servlet中使用airline.java对象(在代码中注释掉)时,它工作了。 我做错了什么?
答案 0 :(得分:2)
它似乎完全可以预期,您没有为实体的表Passenger
提供名称,因此它使用实体名称作为默认表名,因此它尝试插入表{架构Passenger
的{1}}是预期的。
对我来说,问题只是到目前为止尚未创建表格,如果您想让airline
为您创建表格,则应将属性eclipselink
添加到您的文件{{1然后按照here所述将其设置为eclipselink.ddl-generation
。
在你的情况下,它将是:
persistence.xml