0

私はこれを聞かなければならないのは本当に愚かだと感じています。しかし、私は自分のコードを4時間見ていて、それを理解できません。データベースを数回再構築しましたが、動作させることができません。なんらかの理由でテーブルの1つが作成されていません。ゲーム、開発者、ゲームイメージ、ユーザーの4つのテーブルがあります。ユーザーは作成されていませんが、他のユーザーは完全に作成され、機能しています。ばかげた間違いだと思いますが、私にはわかりません。誰かがなぜこれが起こっているのかを私に教えてくれれば、それは素晴らしいことです。トップリンクを使用しています

これが私のコードです:

永続性xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="GameDatabasePU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>domainmodel.Game</class>
<class>domainmodel.GameImage</class>
<class>domainmodel.Developer</class>
<class>domainmodel.User</class>
<properties>
  <property name="toplink.jdbc.user" value="app"/>
  <property name="toplink.jdbc.password" value="app"/>
  <property name="toplink.jdbc.url" value="jdbc:derby://localhost:1527/Gamedatabase;create=true"/>
  <property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
  <property name="toplink.ddl-generation" value="drop-and-create-tables"/>
</properties>
</persistence-unit>
</persistence>

ユーザー:

@Entity
public class User {
    @Id
    private String username;
    private String password;
    private String firstName;
    private String surname;

    public User() {
    }

    public User(String naam, String pas){
        setUsername(naam);
        setPassword(pas);
    }

    public User(String naam, String pas, String firstName, String surname){
        setUsername(naam);
        setPassword(pas);
        setFirstName(firstName);
        setSurname(surname);
    }

    public void setUsername(String naam){
        this.username=naam;
    }
    //methods
}
4

1 に答える 1

2

本当の答えではありませんが、問題を絞り込むためのヒントがいくつかあります。

1)persistence.xmlから他のすべてのクラスを削除してみてください(他のクラスの注釈をコメントアウトしてください)

おそらく、問題は別のクラスにあり、出力は誤解を招く可能性があります。

2)デバッグ/出力レベルを別のレベル(DEBUG、FINE、FINEST)に設定して、JPAプロバイダーにクエリを公開してもらいます。

TopLinkの場合、これをprersistenceプロパティセクションに追加するとうまくいくと思います。

<property name="toplink.logging.level" value="FINEST" />

3)どのデータベースを使用していますか?MySql、PostgreSQL、HSQL、SQLサーバー?

一部のデータベースは、一部の機能を(完全に)サポートしていません。

4)問題ではありませんが、とにかく;

Userクラスに注釈を付ける@Table(name = "user")@Table(name = "usera")、テーブル名に問題がないことを確認します。

于 2012-06-07T05:59:41.373 に答える