2017-01-13 13 views
0

が、私はこのコードを持って持続します前記テーブル内にある。なぜ誰が知っていますか?JPA OneToManyは一つだけ

EDIT:これは挿入のコードです。リポジトリは単純なJpaリポジトリです。

Prize prize = prizeRepository.findById(prizeId); 
if(prize == null) return; 
List<TicketNumber> winners = ticketNumberRepository.findByPrizeId(fixedPrize.getId()); 
if (winners != null && !winners.isEmpty()) { 
    for (TicketNumber winner : winners) { 
     winner.setWinner(false); 
     TicketNumber t = ticketNumberRepository.save(winner); 
    } 
    raffleNumberRepository.flush(); 
} 
prize.getTicketNumbers().clear(); 
for (String ticketId : ids) { 
    TicketNumber ticketNumber = ticketNumberRepository.findOne(ticketId); 
    if (ticketNumber != null) { 
     ticketNumber.setWinner(true); 
     prize.getTicketNumbers().add(raffleNumber); 
    } 
} 
prize.setNumbersAssigned(true); 
prizeRepository.saveAndFlush(prize); 
+0

コードを投稿してください。コードは、ma、y番号、および2つのエンティティのコード全体を挿入します。 –

+1

あなたはセットの代わりにリストを使用しようとしましたか?たぶんあなたは等価の問題があります – Bartun

+1

私はそれがequalsとhashCodeであると確信しています –

答えて

-2

1対多の関連付けには、結合テーブルは必要ありません。 1対多の関連付けでは、子は親のIDを保持する必要があります。

あなたの子供の親のIDが不足しているように見えます。休止状態は、これが多対多の関連であると仮定してから、結合テーブルを作成することです。

+1

No.結合テーブルは、単方向の1対多の関連付けの有効な理由で、指定されたデフォルトのマッピングです。そして、それはとにかく質問に答えません。 –

+0

あなたはon-to-manyのための結合テーブルの良い理由があると言います - この場合、追加のテーブルが有益である理由をあなたの意見を共有できますか?また、私の提案は、マッピングを変更すると問題が解決するかもしれないが、完全にはっきりしていない可能性があることを理解している。 –

+1

単方向であれば、多くの側が片側を知るべきではないということです。この関連を具体化するために多くのサイドテーブルに列を持つことは目的を破るものです。面白いと思いますが、私は同意しますが、異なる視点に感謝します。 –