2012-02-03 6 views
0

正しいオブジェクトをロードできませんでした。JPA単一テーブル継承は、私はこれらの2つのクラスを持っている

@Test 
    public void testGetItemPersonaFisica() { 
     EntityManager entityManager = factory.createEntityManager(); 
     entityManager.getTransaction().begin(); 

     Cliente.ClienteId clienteId = new Cliente.ClienteId(codiceAbi, btUtenteProfilo);   

     Cliente cliente = entityManager.find(Cliente.class, clienteId); 
     assertNotNull(cliente); 
     System.out.println(cliente); 
     System.out.println(cliente.getTipologiaCliente()); 

    } 

最初のテスト:COD_TIPOCLIENTE = PFでのそのレコードの最初のテスト:すべてがうまくいきます。 しかし、私は変更されたときに、クエリがJPAからトリガー以来、私はエラーを得たCOD_TIPOCLIENTE = PMと値は次のとおりです。

SELECT * FROM S_MC_CC_CLIENTI WHERE (((COD_ABI = ?) AND (ANAG_UTENTE = ?)) AND (COD_TIPOCLIENTE = ?)) 
bind => [01025, 71576493, PF] 

キーがあるので、生成されたクエリが間違っているようだ[01025、71576493] PFながら、 discriminatorカラムの値にする必要があります。

どのように問題を解決するか考えてみましょうか?

種類は、私は問題を発見 マッシモ

+0

受信しているエラーを入力してください。 – Marthin

+0

エラーは論理です。 Cliente cliente = entityManager.find(Cliente.class、clienteId)は、where条件が入れられ、スーパークラスでハードコードされた値を持つdiscriminator列を持つため、正しい要素を返しません。 AND(COD_TIPOCLIENTE =?)= PF –

答えて

0

について。私は、永続ユニット記述子にサブクラス参照を挿入するのを忘れていました。

すべて素晴らしいです。

マッシモ

関連する問題