私の春のアプリケーションはJSON APIを消費し、JPAを使用してデータベースに保存します。私は適切に設計されたエンタテイメントとモデルの問題に直面しています。JPAのentiteとJSONモデルを構築するには?
@Data
@Setter(AccessLevel.NONE)
@Entity
@Table(name = "TvShows")
public class TvShowLocal implements TvShowEntity {
@Id
@GeneratedValue
public Integer id;
public Integer tvShowId;
public String name;
public Integer runtime;
public String summary;
@Column(name = "seasons")
@OneToMany
@ElementCollection(targetClass = SeasonLocal.class)
public List<SeasonLocal> seasons;
@Column(name = "episodes")
@OneToMany
@ElementCollection(targetClass = EpisodeLocal.class)
public List<EpisodeLocal> episodes;
@Override
public List<SeasonEntity> getSeasons() {
return new ArrayList<SeasonEntity>(seasons);
}
@Override
public List<EpisodeEntity> getEpisodes() {
return new ArrayList<EpisodeEntity>(episodes);
}
}
ロンボク注釈が自動的にゲッター/セッターを実装し@data:ように見える
@Data
@Setter(AccessLevel.NONE)
@JsonIgnoreProperties(ignoreUnknown = true)
public class TvShowRemote implements TvShowEntity {
@JsonProperty("id")
public Integer id;
@JsonProperty("url")
public String url;
@JsonProperty("name")
public String name;
@JsonProperty("summary")
public String summary;
@JsonProperty("updated")
public Integer updated;
@JsonProperty("_embedded")
public Embedded embedded;
public List<SeasonEntity> getSeasons() {
return new ArrayList<SeasonEntity>(embedded.getSeasons());
}
public List<EpisodeEntity> getEpisodes() {
return new ArrayList<EpisodeEntity>(embedded.getEpisodes());
}
}
私のJPAのentites:
私のモデルJSONは次のようになります。 私は両方のクラスのインタフェースに実装してみました:
public interface TvShowEntity {
Integer getId();
String getName();
List getSeasons();
List getEpisodes();
}
私はSeasonRemote、SeasonLocal、EpisodeRemote、EpisodeLocalに実装2種類のインタフェースSeasonEntity、EpisodeEntityもあります。上記の例のように見えます。
TvShowLocalにTvShowRemoteを割り当てようとしました。
TvShowEntity tvshowEntity = new TvShowRemote();
TvShowLocal tvShowLocal = (TvShowLocal) tvShowEntity;
しかし、私はこのようにこのオブジェクトをキャストできません。 これを達成するより良い方法はありますか?
プロパティ名を変更していない場合、@ JsonPropertyは冗長です。 – chrylis