@Vlad Mihalceaが提供する例のように、EmbeddedIdクラスで@ManyToManyマッピングを実装しました。しかし、私はSpringのRESTリポジトリを作成し、このJoinTableエンティティ用に使用する必要があります。このエンティティ(JoinTable)で、私は古典的なid
を持っていないので、このように、JoinTableには通常のLong IDがありませんが、代わりにEmbeddedIdがあります。これを使用してSpringリポジトリを作成するにはどうすればよいですか?
@CrossOrigin
@RepositoryRestResource(collectionResourceRel = "companyproducts", path = "companyproducts")
public interface CompanyProductRepository
extends PagingAndSortingRepository<CompanyProduct, CompanyProduct.CompanyProductId> {
}
:しかし
public class FooBar {
....
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
}
通常、私は、リポジトリを有効にするには、このような何かをするだろう
代わりに私が持っている:
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は与えられませんでした2つの外部キーだけがそこにありますが、それはもちろん期待されています) 私はレスポンスに数字のIDを持つことはできませんなぜなら、dbテーブルには1つもないからです。 – developer10
残念ながら、現在の設定から数値IDを取得する方法がわかりません。私はこれらの2つのFKに別の数値IDを追加しようとしましたが、それは不可能でした。つまり、私は、結合テーブルの特定のレコードのリポジトリによってCRUD操作を公開できるようにしたいと考えています。この表にはPKと数値IDの2つのFKしかありません。疑いの余地はありません。私はそれを確認する誰かが必要です。 – developer10
私は単純にhttp:// localhost:8080/api/companyproductsのように要求します(リポジトリ宣言を私が使用した注釈で更新します) – developer10