1

Shipvia と Route の 2 つのエンティティ クラスがあります。私のShipviaは正常に動作しています。ルート エンティティ クラスはその正確なコピーですが、もちろん、テーブル名とフィールドに合わせて調整されています。両方のクラスは、次のメソッドを使用して読み取られます。

public class RetrieveResultList {

private static final EntityManagerFactory FACTORY = Persistence.createEntityManagerFactory("EntityLibraryPU");

    public static <T> List<T> retrieveResultList(Class<T> type) {
        EntityManager entityManager = FACTORY.createEntityManager();
        String tablename = type.getName(); // figure out table name from **type**
        Query query = entityManager.createNamedQuery(tablename + ".findAll");
        List<T> resultList = query.getResultList();
        entityManager.close();
        return resultList;
    }
}

Shipvia の作業エンティティ クラスは次のとおりです: http://pastebin.com/R53tNHyp

Route のエンティティ クラスは次のとおりです。http://pastebin.com/8f4L2Z62

変数またはフィールドが欠落してどこかで間違いを犯した場合を除き、上記のメソッドから resultList を取得しようとすると、次のエラーが発生する理由がわかりません。

次のエラーが表示されます。

Local Exception Stack: 
Exception [EclipseLink-6044] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.QueryException
Exception Description: The primary key read from the row [ArrayRecord(
ROUTE.ROUTEKEY => null
ROUTE.RUADD_DATE => null
ROUTE.RUADD_TERM => null
ROUTE.RUADD_TIME => null
ROUTE.RUADD_USER => null
ROUTE.RUCHG_DATE => null
ROUTE.RUCHG_NUMB => null
ROUTE.RUCHG_TERM => null
ROUTE.RUCHG_TIME => null
ROUTE.RUCHG_USER => null
ROUTE.ROUTE => null)] during the execution of the query was detected to be null.      
Primary keys must not contain null.
Query: ReadAllQuery(name="Route.findAll" referenceClass=Route sql="SELECT ROUTEKEY, RUADD_DATE, RUADD_TERM, RUADD_TIME, RUADD_USER, RUCHG_DATE, RUCHG_NUMB, RUCHG_TERM, RUCHG_TIME, RUCHG_USER, ROUTE FROM ROUTE")

奇妙なのは、上記のクエリを実行すると

SELECT ROUTEKEY, RUADD_DATE, RUADD_TERM, RUADD_TIME, RUADD_USER, RUCHG_DATE, RUCHG_NUMB, RUCHG_TERM, RUCHG_TIME, RUCHG_USER, ROUTE FROM ROUTE

完璧な結果を返します。どこからエラーを探し始めればよいかわかりません!

4

1 に答える 1