2

H2 と Jackson を使用して、単純な RESTful リポジトリを作成するために Spring Boot (1.2.4) を調査してきました。

他の人と同様に、デフォルトでは @Id フィールドが返された Json に含まれていないことに気付きました (この質問で説明されているように:アプリを Spring Boot に移行した後に Spring Data Rest を使用しているときに、@Id を持つエンティティ プロパティを確認しました)。 JSON にマーシャリングされなくなりました)。

そのため、それらを含めるように構成を微調整したいと思います。

しかし、私はそれをすべて機能させるのに苦労しています。

基本エンティティ クラス:

@Entity
public class Thing {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id; //I want this to appear in the RESTful JSON

    private String someInformation;

    protected Thing(){};

    public String getSomeInformation() { return someInformation; }

    public void setSomeInformation(String someInformation) { this.someInformation = someInformation; }

}

基本的なリポジトリ インターフェイス:

public interface ThingRepository extends PagingAndSortingRepository<Thing, Long> {    
    List<Thing> findBySomeInformation(@Param("SomeInformation") String someInformation);
}

簡単な開始アプリケーション:

@ComponentScan
@EnableAutoConfiguration
public class Application {    
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }    
}

そして私の構成クラス:

@Configuration
public class RepositoryRestMvcConfig extends SpringBootRepositoryRestMvcConfiguration {     
    @Override
    protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        config.exposeIdsFor(Thing.class);
    }        
}

--debug を使用して Spring Boot を実行すると ( http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.htmlで説明されているように)、私の構成が表示されます。発見されましたが、効果はないようです。

4

1 に答える 1

0

Jackson は、メンバー変数自体ではなく、クラスのゲッター/セッターで機能します。したがって、id が JSON に含まれていることを確認するには、単純に getter を追加します。

@Entity
public class Thing {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id; //I want this to appear in the RESTful JSON

    private String someInformation;

    protected Thing(){};

    //this is what is needed
    public long getId() { return id; }

    public String getSomeInformation() { return someInformation; }

    public void setSomeInformation(String someInformation) { this.someInformation = someInformation; }

}
于 2016-12-20T11:59:11.887 に答える