2015-05-12 27 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

我同意,但这应该是一个评论。 –