【问题标题】:Can I insert a JPA entity directly using QueryDSL?我可以使用 QueryDSL 直接插入 JPA 实体吗?
【发布时间】: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>));

这样的事情可行吗?

【问题讨论】:

    标签: hibernate jpa querydsl


    【解决方案1】:

    Querydsl 没有涵盖这些内容,JPA API 也没有涵盖 INSERT 子句,因此您需要通过 JPA EntityManager API 进行插入。

    【讨论】:

    • 我害怕那个。感谢您的澄清。
    猜你喜欢
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2010-12-24
    • 2010-10-07
    • 2016-07-02
    • 2023-03-05
    相关资源
    最近更新 更多