私はSpring Restアプリケーションを作成しようとしています。 JSONデータを返すためのActivityおよびControllerクラスを作成すると、常にActivityDetail
という全体リストが返されますが、通常は1つだけ(最後の項目)、またはすべてのオブジェクトデータが応答しないようにします。JSONレスポンスでオブジェクトの特定の部分を返す方法
どうすればいいですか?オブジェクトActivityWithOneDetail
またはActivityWhitoutTitle
を作成しますか?しかし、どのようにしてオーバーフローデータベースなしでこのオブジェクトに情報を渡すことができますか?私はそれがActivity
オブジェクトを取得し、そのオブジェクトから他のオブジェクトを作成する意味がないと思う(アクティビティはリポジトリpublic interface ActivityRepository extends JpaRepository { ... }
なので、このオブジェクトに簡単にアクセスできます)。
時々私はより多くの返したいので、私は、コントローラからのデータが少なく、他の時間、エンティティオブジェクトを返すでキープ関係での問題の多くを見るが、私は実体でJSONレスポンスにパスデータをブロックするときには、すべてのコントローラに影響を与えます。それは弾力的なソリューションではないので、あなたが私のコントローラーからJSON objects
を返すことができると私は別のヒントを与えることができると思います(データベースからすべて@oneToMany
データを取得することは、各要求で何をすべきか分かりません)。
以下、私のコードの一部を貼り付けていますが、この質問はより理論的だと思います。
@Entity
@Table(name = "ACTIVITY")
public class Activity {
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "CREATE_DATE")
@Temporal(TemporalType.TIMESTAMP)
@NotNull
private Date createDate;
@Column(name = "ACTIVE")
@NotNull
private Boolean active;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "ACTIVITY_USER", joinColumns = @JoinColumn(name = "ACTIVITY_ID", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"))
@JsonBackReference
private Set<User> users;
@OneToMany(mappedBy = "activity_id")
private List<ActivityDetail> activityDetails;
@ManyToOne
@JoinColumn(name = "ACTIVITY_OWNER")
private User activityOwner;
@OneToMany(mappedBy = "activityParent")
@JsonBackReference
private List<Task> activityTasks;
}
// Constructor, Getter, Setter
そして、私のコンストラクタレンタルの一部:
@RequestMapping(value = "/api/{userId}/activities", method = RequestMethod.GET)
public List<Activity> activities(HttpServletRequest request, @PathVariable(value="userId") final Long id){
User user = userRepository.findById(id);
List<Activity> activities = activityRepository.findAllByUsers(user);
return activities;
}
アクティビティオブジェクトのこの部分について尋ねます: 'private List activityDetails'、アクティビティオブジェクトの1つではありません。 –