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' 您是否有一些灵魂?谢谢你的建议
可能与问题无关,但是您应该不会使用'inner join'作为't.ownerWallet',因为您是通过'w.userId'进行搜索的? –
查询不会引发与插入数据相关的异常。如果显示异常给出堆栈跟踪和持久性代码,它来自 –