2016-05-28 7 views
0

JPAを学習しようとしています ここにエンティティファイルがあります。 Passenger.javaJPAが間違ったテーブルに接続しています

@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> 

私のサーブレットは、このようなものです。

@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:1146 コール:INSERTテーブル 'airline.passengerは' エラーコードは存在しません。 PASSENGER INTO(ID、FIRSTNAME、LASTNAME)VALUES(?、?、?)私の知る限りではなくAIRLINEテーブルの助手席のテーブルに接続しようとしている理解できるよう

。 航空会社のテーブルを指すデータソースを割り当てました。実際に私はairline.javaクラスファイルをPassenger.javaと同じように書いていました。私はサーブレット内でairline.javaオブジェクト(コード内でコメントアウト)を使用していました。 私は何が間違っていますか?

答えて

2

エンティティPassengerのテーブルに名前を指定しなかったため、エンティティの名前がデフォルトのテーブル名として使用されるため、スキーマのテーブルPassengerに挿入しようとしましたairlineこれは期待されるものです。

私にとっては、あなたの問題は、あなたがあなたのファイルpersistence.xmlにプロパティeclipselink.ddl-generationを追加し、hereが説明したようcreate-or-extend-tablesに設定する必要があり、eclipselinkはあなたのためにテーブルを作成してみましょうしたい場合は、テーブルには、これまでに作成されていないだけということです。今では、次のエラーを与える私は、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> 
     <properties> 
      <property name="javax.persistence.jtaDataSource" value="java:/airlines"/> 
      <property name="eclipselink.ddl-generation" value="create-or-extend-tables"/> 
     </properties> 
    </persistence-unit> 
</persistence> 
+0

あなたのケースでは、それは次のようになります。 スレッド "main"の例外javax.persistence.PersistenceException:Exception [EclipseLink-4021](Eclipse永続化サービス - 2.6.3.v20160428-59c81c5):org.eclipse.persistence.exceptions.DatabaseException 例外の説明:ドライバ[null]、ユーザ[null]およびURL [null]からの接続。予想されるドライバクラスとURLが設定されていることを確認します。ログイン、persistence.xml、またはsessions.xmlリソースを確認してください。 jdbc.driverプロパティは、データベースプラットフォームと互換性のあるクラスに設定する必要があります – AhmedRana

+0

Passenger.javaを航空会社のテーブルに書き込む方法はありますか? – AhmedRana

+0

@Entityの後に@Table(name = "AIRLINE")を追加しました –

関連する問題