2017-08-13 11 views
1

Spring REST(新機能)に問題があります。Spring REST - 抽象スーパークラスの@createdDateでエラーが発生する

私の意図は、ID/Version/CreatedDateのようないくつかの一般的なフィールドを持つAbstract-Super-Classを持つことです。 JPAとデータベースでうまく動作します。しかし、私はいくつかのリポジトリを持つ子供を公開しようとするとPagingAndSortingRepository私はAPIを照会すると、私は次のエラーを取得します。

他のフィールドは正常に機能します。 @CreatedDate注釈に対応するものです。

エラー:

Resolved exception caused by Handler execution:   
org.springframework.http.converter.HttpMessageNotWritableException: 
Could not write JSON: java.sql.Date cannot be cast to java.lang.String; 
nested exception is com.fasterxml.jackson.databind.JsonMappingException: 
java.sql.Date cannot be cast to java.lang.String (through reference chain: 
org.springframework.hateoas.PagedResources["_embedded"]- 
java.util.Collections$UnmodifiableMap["users"]->java.util.ArrayList[0]org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module$PersistentEntityResourceSerializer$1["content"]->com.*.*.domain.User["createdDate"]) 

スーパー:

@MappedSuperclass 
@EntityListeners(AuditingEntityListener.class) 
public abstract class AbstractPersistentObject 
    implements PersistentObject, Serializable { 

@Id 
@GeneratedValue(strategy= GenerationType.AUTO) 
protected Long id; 
protected Integer version; 

@org.springframework.data.annotation.CreatedDate 
@Temporal(TemporalType.DATE) 
public Date createdDate; 

... getter/setter/constructor 

protected Date getCreatedDate() { 
    return createdDate; 
} 

protected void setCreatedDate(Date createdDate) { 
    this.createdDate = createdDate; 
} 

例の子:

@Entity 
@Table(name = "UserTable") 
public class User extends AbstractPersistentObject { 

private String firstName; 
private String lastName; 

@NotNull 
@Column(unique = true) 
private String email; 
@JsonIgnore 
private String password; 

private boolean verified; 
... 

ソリューション:パッケージから

Upgrading Spring Boot from 2.0.0.M2 to 2.0.0.M3. 
+0

エラーは、データ型の変換の問題を示します。 'AbstractPersistentObject'から' createdDate'のゲッターとセッターを含めてください。 – Kirby

+0

私はそのフィールドのゲッターセッターを含んでいました。返信のThx – Hannes

+0

あなたのプロジェクトのどこかに '@ EnableJpaAuditing'という注釈がありますか? – Kirby

答えて

0

ありがとうございます。

例外的に私はうんざりしませんでした!私は現在、Springブート2.0.0.M2で作業しています。私は2.0.0.M3に更新され、うまく動作します。

私はすぐにレポを調べましたが、私たちに関して何も見つかりませんでした。

ソリューション:このバージョンで作業しながら、それが何らかの形で期待されているので

Upgrading Spring Boot from 2.0.0.M2 to 2.0.0.M3. 

は、この先に確認している必要があります!

+1

問題を解決したことを知ってうれしいです。バージョン情報を求めていないことに私を恥じている。私はあなたがマイルストーンリリースではなく安定バージョンを使用していると仮定しました。 – Kirby

+0

ええ - 私は最初にそれを言及すべきでした。その目的のためのちょうどプロジェクト、私はそれがうまくいくと思った... :) – Hannes

-1

トライ利用@CreatedDate:ゲッターとセッターがを保護宣言されているのに対し、クラスAbstractPersistentObjectorg.springframework.data.annotation.CreatedDate

+0

私はそれをチェックした。悲しいことに、その正しいものが、私は確信していませんでした^^ – Hannes

0

createdDate変数インスタンスは公共宣言されています。 getterとsetterがpublic、インスタンス変数が(またはプライベート)になるようにアクセスを元に戻してください。

+0

はい、私はすでに声で演奏しました。返信いただきありがとうございます。私はSpring Bootをアップグレードして解決しました。 – Hannes

関連する問題