java - JPA connecting to wrong table -
i trying learn jpa here entity file. 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; }
my persistence.xml below.
<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>
my servlet this.
@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(); }
}
when run code following error.
org.eclipse.persistence.exceptions.databaseexception internal exception: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception: table 'airline.passenger' doesn't exist error code: 1146 call: insert passenger (id, firstname, lastname) values (?, ?, ?)
as far can understand trying connect passenger table instead of airline table. have assigned data source points airline table. in fact wrote class file airline.java same passenger.java, when used airline.java object(commented out in code) in servlet worked. doing wrong?
what seem totally expected, did not provide name table of entity passenger
uses name of entity default table name tries insert table passenger
of schema airline
expected.
for me problem table has not been created far, if want let eclipselink
create table you, should add property eclipselink.ddl-generation
file persistence.xml
, set create-or-extend-tables
described here.
in case like:
<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> <properties> <property name="javax.persistence.jtadatasource" value="java:/airlines"/> <property name="eclipselink.ddl-generation" value="create-or-extend-tables"/> </properties> </persistence-unit> </persistence>
Comments
Post a Comment