Есть ли способ в QueryDSL вставить объект JPA без прямого использования поставщика JPA?
Моя проблема с вариантом использования заключается в следующем. Я использую Hibernate с отображением таблицы соединений между двумя объектами.
Ex:
public class Contract implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Version
@Column(name = "version")
private Integer version;
private String number;
private String volume;
@ManyToMany
@JoinTable(joinColumns = @JoinColumn(name = "contract_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "attachment_id", referencedColumnName = "id"))
private List<Attachment> attachments;
}
Моя проблема в том, что если я попытаюсь одновременно добавить вложения в 2 отдельных потока, я получу оптимистичные исключения блокировки (как и ожидалось). Поэтому вместо этого я хотел бы попытаться добавить вложение напрямую с помощью команды вставки SQL.
Можно ли вставить объект Attachment
через QueryDSL в качестве объекта? Я не смог найти никакой справочной документации, описывающей этот вариант использования. Только запрос на обновление, который требует настройки отдельных полей.
Псевдокод:
JPAQuery.insert(QAttachment.attachment).into(QContract.attachment).where(QContract.contract.id.eq(<contractId>));
Возможно ли что-то подобное?