Can I insert a JPA entity directly using QueryDSL?
QueryDSL中是否有一种方法可以在不直接使用JPA提供程序的情况下插入JPA实体?
我的用例问题如下。 我将Hibernate与两个实体之间的联接表映射一起使用。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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插入
伪代码:
1 | JPAQuery.insert(QAttachment.attachment).into(QContract.attachment).where(QContract.contract.id.eq(<contractId>)); |
这样可行吗?
Querydsl并没有涵盖这方面,JPA API也没有涵盖INSERT子句,因此您将需要通过JPA EntityManager API进行插入。