에 많은에 findByEntityNot() 나는 많은 관계로 다음과 같은 많은 사람들이 있습니다봄 데이터 : 많은 관계
@Entity
public class Foo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@JsonIgnore
@ManyToMany
@JoinTable(name = "foo_bar",
joinColumns = {@JoinColumn(name = "foo_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "bar_name", referencedColumnName = "name")})
private Set<Bar> bars = new HashSet<>();
}
@Entity
public class Bar implements Serializable {
@Id
private String name;
}
지금 나는 이름을 가진 바을 포함하지 않는 모든 푸의의 FooRepository을 조회 할 "예". 나는 FooRepository에서 다음 봄 데이터 방법을 사용하려고 :
findByBars_NameNot(String barName);
를하지만이는 bar_name 열에서 "예"를 가지고 있지 않은 피벗 테이블 foo_bar의 모든 항목 중 하나를 반환. 를 작성하는 봄의 데이터에 어떤 좋은 방법이 있나요
SELECT * FROM myschema.foo_bar WHERE bar_name != "example";
: 이것은 중복 푸 실제로는 다음과 같은 SQL과 동등의, 즉 이름이 "예"가있는 줄을 포함 할 푸 객체뿐만 아니라 객체를 반환 할 수 있다는 것을 의미합니다 내가 시도하고있는 것을하기위한 저장소 방법?
내가 필요하지 않습니다하지만 난이 일을하는 청소기 방법이 느낌이 나는 네이티브 쿼리를 사용하기 주저하는 다음과 같은 기본 쿼리를 발견 :
SELECT * FROM myschema.foo WHERE id NOT IN (SELECT foo_id FROM myschema.foo_bar WHERE bar_name = "example")
감사에서
EXISTS
쿼리에 대한 지원은 없습니다! 스프링 데이터 메소드 네이밍에 대한 지원이 없다는 것은 수치스러운 일입니다.하지만 이것은 분명히 제가 시도한 것보다 훨씬 더 정돈 된 것입니다! – Plog