繁体   English   中英

春季休息多对多反应

[英]spring rest many to many response

我有三节课。
用户可以组织一个活动,也可以参加许多活动。
活动只能有一个组织者,参加者很多。
参加-具有事件的表绑定用户,并具有其他字段(这就是为什么我不使用@ManyToMany批注的原因)

我希望我的响应向用户显示他参加的活动,但是不知何故排除了Attendee类中的“用户”字段。
当我寻找事件时,我想在“参加者”课程中排除“事件”。

我想为用户表示和事件表示创建Dto,但是我感觉它会复制我的所有代码。
有什么方法可以注释Attendee类,因此对于Event它将显示一件事,对于User它将显示另一件事?
我阅读了有关@JsonManagedReference和@JsonBackReference的信息,但并不确定它会对我有帮助。

@Entity
@Table(name = "calendar_users")
public class User extends BaseEntity {

    @Column(nullable = false)
    private String name;

    @OneToMany(mappedBy = "user")
    private List<Attendee> attendeeEvents;

    @OneToMany(mappedBy = "organizer")
    private List<Event> organizedEvents;
}

@Entity
@Table(name = "events")
public class Event extends BaseEntity {

    @Column(nullable = false)
    private String name;

    @ManyToOne(optional = false)
    @JoinColumn(name = "user_id")
    private User organizer;

    @OneToMany(mappedBy = "event")
    private List<Attendee> attendees;
}

@Entity
@Table(name = "attendees")
public class Attendee extends BaseEntity {

    private Date responseTime;

    @ManyToOne(optional = false)
    @JoinColumn(name = "response_status_id")
    private ResponseStatus responseStatus;

    @ManyToOne(optional = false)
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne(optional = false)
    @JoinColumn(name = "event_id")
    private Event event;

}

实际上,正确的解决方案是添加DTO对象以仅传递必要的信息。

但是对于简单的情况,您可以定义两个类Attendee和AttendeeSimple(不带事件)。 并在用户和事件中使用2个不同的实体。

如果Attendee扩展了AttendeeSimple,可能会更简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM