나는 @ManyToMany 관계를 갱신하려고하지만 대신 삭제됩니다 ...JPA @ManyToMany는 한쪽에만 있습니까?
내 프로젝트의 클래스는 다음과 같습니다
@Entity
public class Project {
...
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "PROJECT_USER",
joinColumns = @JoinColumn(name = "PROJECT_ID", referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"))
private Collection<User> users;
...
}
하지만이 없습니다 - 내가 원하지 않는 - User 엔터티에있는 프로젝트 모음.
생성 된 데이터베이스 테이블을 보면 모양이 좋아 보입니다. 여기에는 모든 열과 제약 조건 (기본/외래 키)이 포함됩니다.
그러나 사용자 목록이있는 프로젝트를 유지할 때 (사용자는 여전히 데이터베이스에 있음) 매핑 테이블 은 업데이트되지 않습니다.은 업데이트되지만 나중에 프로젝트를 새로 고치면 사용자는 삭제됩니다. 더 나은 이해를 위해
:
그래서Project project = ...; // new project with users that are available in the db
System.out.println(project getUsers().size()); // prints 5
em.persist(project);
System.out.println(project getUsers().size()); // prints 5
em.refresh(project);
System.out.println(project getUsers().size()); // prints 0
, 어떻게 사용자와 프로젝트 사이의 관계는 새로 고칠 수 있습니다?
덕분에 ... em.flush을 () 트릭을 했어! –
달성하고자하는 기능이 무엇인지 궁금합니다. 이 실험은 ORM의 작동 방식에 대한 흥미로운 학문적 인 조사이지만, 실제로 당신이 그것을하고 싶어하는 이유를 모르겠습니다. UnitTesting 용 – Affe
... –