【发布时间】:2014-06-18 17:11:10
【问题描述】:
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>));
这样的事情可行吗?
【问题讨论】: