1

spring-data jpaで春データ休憩を使用して自己hrefに表示する正しいURLを取得できません。 StudentInformationクラス春データ休憩不当なリソースhref

@Entity 
@Table(name="studentinformation", schema="main") 
public class StudentInformation { 

    @Id 
    private Long id; 

    ... 
    ... 
} 

(他のプロパティ/ゲッター/セッターもあり、対応するリポジトリファイル

@RepositoryRestResource(collectionResourceRel = "students", path = "students") 
public interface StudentRepository extends PagingAndSortingRepository<Student, Long> { 

} 

@Entity 
@Table(name="student", schema="main") 
public class Student { 

    @Id 
    private Long id; 

    ... 
    ... 

    @OneToOne 
    @JoinColumn(name = "id") 
    private StudentInformation studentInformation; 
} 

は、だから私は学生のクラスを持っています省略)

私はそのIDずつを検索するとき、私は期待通りに対応するリポジトリ

@RepositoryRestResource(collectionResourceRel = "studentinformation", path = "students/studentinformation") 
public interface StudentInformationRepository extends CrudRepository<StudentInformation, Long> { 
} 

学生ディスプレイと

{ 
    "id": 1, 
    ... 
    ... 
    "_links": { 
    "self": { 
     "href": "http://localhost:8080/students/1" 
    }, 
    "student": { 
     "href": "http://localhost:8080/students/1" 
    }, 
    "studentinformation": { 
     "href": "http://localhost:8080/students/1/studentinformation" 
    } 
    } 
} 

除いて、私は学生からstudentInformationへのリンクをたどるとき、studentInformationが持っています自己リンクが正しくありません。

{ 
    "id": 1, 
    ... 
    ... 
    "_links": { 
    "self": { 
     "href": "http://localhost:8080/students/studentinformation/1" 
    }, 
    "studentinformation": { 
     "href": "http://localhost:8080/students/studentinformation/1" 
    } 
    } 
} 

どのように私は "HREF" を読むためにそのリンクを得るのです: "http://localhost:8080/students/1/studentinformation 代わり の "HREF":" http://localhost:8080/students/studentinformation/1

おかげで、すべての

答えて

1

まず、マルチセグメント・パスstudents/studentinformationのようにサポートされていない可能性があります。this answerを参照してください。URLの設計に専念しないでください。実際にhttp://localhost:8080/students/1/studentinformationの表現が必要な場合は、カスタムコントローラを定義する必要がありますSpring Data RESTには依存しないでください。

projectionsを使用して、/studentsエンドポイントで異なる生徒データを使用する方が良いのではないでしょうか?それがStudentリソースの単なる表現であれば、私は投影と一緒に行くでしょう。 students/1?projection=minimalおよびstudents/1?projection=full。場合studentinformation

studentsとは全く異なるデータが含まれているとそれだけで/studentinformationのエンドポイントを定義し、Studentリソースの表現ではありません。

+0

ありがとうございました。つまり、自分のhref URLにリソースをスタックする方法がないと言っているのですか? like、 http:// localhost:8080/RESOURCE/{ID}/SUB_RESOURCE' @RepositoryRestResourceを使用していますか?自分のカスタムRESTコントローラを定義する必要がありますか?それは不思議そうだ – user2254140

+0

残念なことに、私は、少なくともリポジトリではなく、私が提供したリンクをチェックすることができます。それをする方法があれば - 知っているといいですね。それができる方法は、カスタム実装で@RepositoryRestControllerを定義し、それをあなたのリソースに関連付けることです。 –

+0

リポジトリの実装をしたい場合は、 'SUB_RESOURCE/{ID}?RESOURCE_ID = {RESOURCE_ID}'を実行することができます –

関連する問題