1

eclipseLinkを介してderbyデータベースに接続されているGWTプロジェクトを終了しており、ORMはJPAを介して実行されます。最初に、ログインと登録のボタンがあります。Eclipseからプロジェクトを実行してセッションを開くと、新しいユーザーを登録してこのユーザーでログインすると、すべてが正常に機能します。ここでそのセッションを終了すると、データベースにユーザーが表示されます。ここで新しいセッションを開始しても、データベースにユーザーが表示されます。新しいセッションで今すぐログインしようとすると、ログインボタンは、データベースに初めて接続し、選択クエリを実行する新しいエンティティマネージャーをインスタンス化し、ユーザーを確認するために、でログインしようとします。私のサービスのサーバー側実装の一部であるその関数に到達する限り、すべてが正常に実行されているように見えます。

public Fellow getUser(String username) {
    ObjectManager.checkIfOMisOpen();
    EntityTransaction tx = ObjectManager.em.getTransaction();
    tx.begin();
    TypedQuery<Fellow> checkUser = ObjectManager.em.createQuery(
            "SELECT m FROM Fellow m WHERE " + "m.username = '" + username
                    + "'", Fellow.class);
    tx.commit();
    List<Fellow> listUser = checkUser.getResultList();
    if (listUser.isEmpty())
        return null;
    return listUser.get(0);
}

この関数は、データベースでのアクションのマネージャーであるObjectManagerが開いているかどうかを確認してから、ユーザーにクエリを取得しようとします。この関数の何らかの理由で、プロジェクトのすべてのオブジェクトが削除されます....新しいセッション内でログインしようとした場合のみ...

誰か提案がありますか?これは、締め切りの大きな問題の最後の数時間は親切です:Dよろしくお願いします

ps:これがpersistence.xmlです

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
    <persistence-unit name="...." transaction-type="RESOURCE_LOCAL"> 
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <class>class1</class>
        <class>class2</class>
        <class>class3</class>
        <class>class4</class>
        <class>class5</class>
        <properties>
            <property name="javax.persistence.target-database" value="Derby"/>
            <property name="javax.persistence.jdbc.driver" 
                value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="javax.persistence.jdbc.url" 
              value="jdbc:derby:....;create=true"/> 
            <property name="javax.persistence.jdbc.user" value="..."/> 
            <property name="javax.persistence.jdbc.password" value="..."/>
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <property name="eclipselink.logging.level" value="SEVERE"/> 
        </properties>
    </persistence-unit>
</persistence>

クラス3はクラス4を継承し、問題はそれらのオブジェクトとのマップされた関係でのみ発生することがわかりました...

4

0 に答える 0