在QueryDSL中是否有一种方法可以直接插入JPA实体而不直接使用JPA提供程序?
我的用例问题如下。我正在使用Hibernate与两个实体之间的连接表映射。
例如:
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插入命令直接添加附件。
是否有通过QueryDSL作为对象插入Attachment
实体?我找不到任何涵盖此用例的参考文档。只有更新查询,需要设置各个字段。
伪代码:
JPAQuery.insert(QAttachment.attachment).into(QContract.attachment).where(QContract.contract.id.eq(<contractId>));
这样的事情是否可行?
答案 0 :(得分:6)
Querydsl没有涵盖这一点,JPA API也没有涵盖INSERT子句,因此您需要通过JPA EntityManager API进行插入。