@Vlad Mihalcea가 제공 한 예제에 따라 EmbeddedId 클래스로 @ManyToMany 매핑을 구현했습니다. 그것은 작동하지만,이 JoinTable 엔티티에 Spring의 REST 저장소를 생성하고 사용해야한다.JoinTable은 정규 Long ID가 아니라 대신 EmbeddedId를 가지고 있습니다. 어떻게 Spring 리포지토리를 생성합니까?
public class FooBar {
....
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
}
:이 같은 고전
id
을하지 않아도이 엔티티 (관절 식)에 있기 때문에,
@CrossOrigin
@RepositoryRestResource(collectionResourceRel = "companyproducts", path = "companyproducts")
public interface CompanyProductRepository
extends PagingAndSortingRepository<CompanyProduct, CompanyProduct.CompanyProductId> {
}
그러나 :
일반적으로, 나는 저장소를 사용하려면이 같은 일을 할 것입니다
대신 내가 가진 :
이public class FooBar {
....
@EmbeddedId
private FooBarId id;
...
}
내가 Long
을 사용할 수 없습니다 또는 int
식별자가 이러한 유형이 아니기 때문에 기본적으로 유형이 FooBarId
입니다.
@Embeddable
public class FooBarId implements Serializable {
@Column(name = "foo_id")
private Long fooId;
@Column(name = "bar_id")
private Long barId;
private FooBarId() {}
public FooBarId(Long fooId, Long barId) {
this.fooId= fooId;
this.barId= barId;
}
...
}
내가 저장소 선언에 Long
대신 FooBarId
을 가하고, 물론, 시도 않았다,하지만 내 REST의 JSON 응답에서 내가 얻을 : 그런데
, 나 또한 그 클래스의 대부분을 제공 할 것입니다
http://localhost:8080/api/foobar/[email protected]
(숫자 매개 변수가 아닌 클래스 자체에 대한 경로 (예 : 5)에 유의하십시오.)
내 질문은 Long
, int
대신 EmbeddedId
인 저장소를 사용할 수 있습니까?
흠,하지만 데이터베이스 자체의 조인 테이블을 살펴보면이 조인 테이블의 레코드에 숫자가 없습니다. 두 개의 외래 키만 있습니다. 물론 예상됩니다) 응답에 숫자 ID를 가질 가능성은 없습니다. , db 테이블에 하나가 없기 때문에? – developer10
불행히도 현재 설정에서 숫자 ID를 얻는 방법을 모르겠습니다. 이 두 FK를 따라 다른 숫자 ID를 추가하려고했지만 불가능한 것으로 나타났습니다. 즉, 조인 테이블의 특정 레코드에 대해 저장소에서 CRUD 작업을 수행 할 수 있기를 원합니다. 이 테이블에는 PK와 숫자 ID가없는 두 개의 FK 만 있기 때문에 가능합니다. 나는 그것을 확인하기 위해 누군가가 필요합니다. – developer10
다음과 같이 간단하게 요청합니다 : http : // localhost : 8080/api/companyproducts (내가 사용했던 주석으로 저장소 선언을 업데이트합니다) – developer10