もうこれ完全に自分用メモ。Twitterでもよかったレベルなんだけど残すためにこっち。
Spring Data MongoDBで使うEntityクラスをなんとなくで作ったらなんかエラー出た。
なんかSetterよこせとかっていうエラーが出る。
試しにSetterつけたら確かにうまくいく。
でもfindOneして返しただけなのになんで???
エラー
This application has no configured error view, so you are seeing this as a fallback.
Mon Feb 18 06:27:46 JST 2019
There was an unexpected error (type=Internal Server Error, status=500).
No accessor to set property @org.springframework.data.annotation.Id()private final java.lang.Integer com.example.demo.Flower.id!
java.lang.UnsupportedOperationException: No accessor to set property @org.springframework.data.annotation.Id()private final java.lang.Integer com.example.demo.Flower.id!
at com.example.demo.Flower_Accessor_jjo0e1.setProperty(Unknown Source)
at org.springframework.data.mapping.model.ConvertingPropertyAccessor.setProperty(ConvertingPropertyAccessor.java:61)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readAndPopulateIdentifier(MappingMongoConverter.java:326)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.populateProperties(MappingMongoConverter.java:289)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:275)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:245)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:194)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:190)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:78)
at org.springframework.data.mongodb.core.ReactiveMongoTemplate$ReadDocumentCallback.doWith(ReactiveMongoTemplate.java:2910)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:107)
at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:353)
at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:76)
at com.mongodb.reactivestreams.client.internal.ObservableToPublisher$1.onNext(ObservableToPublisher.java:68)
...
ちょっとコード変えて試したりもっかいエラーをよく読んでみると・・・
あー、finalにしちゃうとConvertのところでうまくいかないのね。雰囲気で了解。
setterなくてもfinalだけ外したら動いた。裏でいろいろあるんだねえ。
@Document
public class Flower {
@Id
private Integer id;
private String name;
private String color;
Flower(){
id = null;
name = "";
color = "";
}
Flower(int id, String name, String color){
this.id = id;
this.name = name;
this.color = color;
}
public Integer getId() {
return this.id;
}
public String getName() {
return this.name;
}
public String getColor() {
return this.color;
}
}