2014-06-18 2 views
3

JPA 제공자를 직접 사용하지 않고 JPA 엔티티를 삽입하는 QueryDSL의 방법이 있습니까?QueryDSL을 사용하여 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 insert 명령을 통해 첨부 파일을 직접 추가하려고합니다.

QueryDSL을 통해 객체로 Attachment 엔티티를 삽입 한 적이 있습니까? 이 사용 사례를 다루는 참조 설명서를 찾을 수 없습니다. 업데이트 쿼리 만 개별 필드를 설정해야합니다.

의사 코드 :

JPAQuery.insert(QAttachment.attachment).into(QContract.attachment).where(QContract.contract.id.eq(<contractId>)); 

이 가능한 같은가요?

답변

4

이것은 Querydsl에서 다루지 않으며 또한 INSERT 절도 JPA API에서 다루지 않으므로 JPA EntityManager API를 통해 삽입해야합니다.

+0

나는 그것을 두려워했다. 해명 해줘서 고마워. –

관련 문제