2015-05-12 29 views
0

我有兩個簡單的模型這同樣關係三次:JPA enity有

public class Wallet{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "WALLET_ID") 
    private long walletId; 

    @Column(name = "OWNER_LABEL") 
    private String ownerLabel; 

    @Column(name = "USER_ID") 
    private long userId; 
} 

public class Transfer{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "TRANSFER_ID") 
    private long transferId; 

    @NotNull 
    @Column(name = "AMOUNT") 
    private BigDecimal amount = BigDecimal.ZERO; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "OWNER_WALLET_ID") 
    private Wallet ownerWallet; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "FROM_WALLET_ID") 
    private Wallet fromWallet; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "TO_WALLET_ID") 
    private Wallet toWallet; 
} 

的問題是,當我想要得到他的所有關係(錢包)在一次傳送中查詢

SELECT t FROM Transfer t 
LEFT JOIN FETCH t.ownerWallet w 
LEFT JOIN FETCH t.toWallet tw 
LEFT JOIN FETCH t.fromWallet fw 
WHERE w.userId = :userId ORDER BY t.createdAt DESC 

我得到的異常MySQLIntegrityConstraintViolationException:鍵'PRIMARY'的重複條目'2' 您是否有一些靈魂?謝謝你的建議

+0

可能與問題無關,但是您應該不會使用'inner join'作爲't.ownerWallet',因爲您是通過'w.userId'進行搜索的? –

+0

查詢不會引發與插入數據相關的異常。如果顯示異常給出堆棧跟蹤和持久性代碼,它來自 –

回答

0

我敢肯定,當你試圖插入一些數據並且主鍵重複時會出現這個錯誤。 MySQLIntegrityConstraintViolationException是關於數據庫模型中的約束違規,與選擇數據無關。

+0

我同意,但這應該是一個評論。 –