0

私はEclipse Juno IDEを使用しています

phpMyAdmin で、独自のデータベースとテーブルを作成しました。JDBC を使用して、いくつかのレコードを入力しました。

次に、JPA を使用していくつかのクエリを実装しようとしました。同じ列を持つエンティティを作成し、persistence.xml をデータベースに接続しました。しかし、プログラムを実行していると、すべてのレコードが削除され、データベースに新しい空のテーブル (同じ名前) が作成されました。私の質問は次のとおりです。データベース内の既存のテーブルに接続する方法はありますが、新しいテーブルを作成することはできません。

別の質問は次のとおりです。テーブルはドライバーの移動に関するものであるため、テーブルに主キーを与えませんでした。各ドライバーは何度も移動できるため、主キーを使用すると、ドライバーに関する新しいデータは追加されません。 . JDBC では正常に動作します。しかし、JPA では、エンティティは主キーになるフィールドが必要です。JPA で同じドライバーに関する新しいデータを追加するにはどうすればよいですか?

永続化ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xsi:schemaLocation="http://java.sun.com/xml/ns/persistence                                   
         http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> 
         <persistence-unit transaction-type="RESOURCE_LOCAL" name="MyJPA"> 
             <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
             <class>pack.bl.Travels</class> 
             <properties> <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/> 
                 <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/drivers"/> 
                 <property name="javax.persistence.jdbc.password" value=""/> 
                 <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
                 <property name="javax.persistence.jdbc.user" value="root"/>

             </properties> 
         </persistence-unit> 

コード:

     EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyJPA");
     EntityManager em = emf.createEntityManager();

     List<Travels> allTravels = em.createQuery("SELECT t FROM travels t",Travels.class).getResultList();
     for (Travels s : allTravels)
         System.out.println(s.toString());


     em.close();
4

3 に答える 3

1

idテーブルに自動インクリメント フィールドを追加します。主キーになります。

テーブルの自動作成については、こちらをご覧ください (JPA 実装として Hibernate を使用していると仮定します): Hibernate hbm2ddl.auto の可能な値とその機能は?

于 2012-08-30T06:39:48.663 に答える
1

hibernate 構成で、hibernate.hbm2ddl.auto が create-drop に設定されていないことを確認してください (そのように聞こえるため)。http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.htmlを検証するように設定してみてください

于 2012-08-30T06:40:40.583 に答える
1

jpa構成のリンクをたどってください

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html

構成 xml ファイルにコードを追加します

<property name="hibernate.hbm2ddl.auto" value="validate"/>
于 2012-08-30T06:46:46.430 に答える