2016-12-28 26 views
1

org.hibernate.HibernateException:指定された識別子を持つ複数の行が見つかりました:578、クラス:com.hibernate.query.performance.persistenceこれは、0のレコードが返さorg.hibernate.HibernateException:指定された識別子を持つ複数の行が見つかりました

SELECT * 
FROM store 
WHERE store.store_id = 578; 

:.model.Store

データベースには、それはSQLを使用して確認した識別子578と重複している店舗の行を持っていません。

One,に関するその他の質問では、OneToOneマッピング自体に問題がある可能性があることが指摘されています。店舗やスタッフのエンティティは、OneToOne関係を持っていると私はそのようにマッピングされます

スタッフ:

@OneToOne(mappedBy = "manager_staff", cascade = CascadeType.ALL, orphanRemoval = true) 
    public Store getStore() { 
     return store; 
    } 

ストア:

@OneToOne 
    @JoinColumn(name = "manager_staff_id", referencedColumnName = "staff_id", nullable = false) 
    public Staff getManager_staff() { 
     return manager_staff; 
    } 

どのようにそれを修正するには?


更新:

例外は、クエリは次のように変更されたときにビットを変更:

Query query = session.createQuery("select c " + 
         " from Rental r, Customer c join fetch c.address address join fetch address.store store join fetch address.city city " + 
         " where r.customer = c " + 
         " and r.returnDate is null"); 

例外:

org.hibernate.HibernateException: More than one row with the given identifier was found: 2951, for class: com.hibernate.query.performance.persistence.model.Store 

データベースへの変更はなかったです。 JProfilerがJPA/Hibernateレコードを捕捉できないため、HQLが正しいかどうかはわかりません。捕捉される唯一のメトリックは、実行されたJDBC接続です。

答えて

-1

データに誤りがある場合、OneToOneはリンクが必要であることを意味します。したがって、クエリで1つのレコードが返されるようにしてください。オプションにする必要がある場合は、それを作成する必要がありますOneToMany

関連する問題