у меня есть две простые модели: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: Дублируемая запись '2' для ключа 'PRIMARY' У вас есть душа? Спасибо в совете
Возможно, не связано с проблемой, но разве вы не должны использовать 'inner join' для' t.ownerWallet', так как вы выполняете поиск по 'w.userId'? –
В запросе не возникает исключение, связанное с вставкой данных. Если вы показываете исключение, укажите трассировку стека и код персистентности, полученный от –