私はJava JPAを使用して私の最初のAPIプロジェクトに取り組んでいます。 プロジェクトは3つのテーブル(イベント、フェーズ、evt_phases)に基づいています。 evt_phasesはイベントとリンクし、start
とend
という2つのフィールドを含みます。これらのフィールドには、フェーズの開始日(時間)と終了日(時間)が含まれています。JPAを使用してエンティティの別のエンティティにエンティティプロパティを挿入できますか?
これは私がデータベーステーブルを作成する方法で、問題は、私は現在、event
がphases
の配列を保持する属性が含まれていると私はにevt_phase
テーブルからstart
とend
を含めたい返すAPIを持っているということですphases
の配列。
@Entity()
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public
Long id;
String name;
@Column(name = "short_desc")
String short_description;
@Column(name = "long_desc")
String long_description;
@OneToMany()
@JoinTable(name = "evt_phase", joinColumns = @JoinColumn(name = "event_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "phase_id", referencedColumnName = "id"))
Set<Phase> phases = new HashSet<>();
@OneToMany()
@JoinTable(name = "evt_resource", joinColumns = @JoinColumn(name = "event_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "resource_id", referencedColumnName = "id"))
Set<Resource> resources = new HashSet<>();
String place;
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setShort_description(String short_description) {
this.short_description = short_description;
}
public String getShort_description() {
return short_description;
}
public void setLong_description(String long_description) {
this.long_description = long_description;
}
public String getLong_description() {
return long_description;
}
public void setPlace(String place) {
this.place = place;
}
public String getPlace() {
return place;
}
public void setPhases(Set<Phase> phases) {
this.phases = phases;
}
public Set<Phase> getPhases() {
return phases;
}
public void setResources(Set<Resource> resources) {
this.resources = resources;
}
public Set<Resource> getResources() {
return resources;
}
}
そしてEvent
実体内部Event
とEventPhase
との間の関係を導入しないのはなぜ、これは私が
@Entity()
public class Phase {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
String name;
@Column(name = "color")
String backColor;
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setBackColor(String backColor) {
this.backColor = backColor;
}
public String getBackColor() {
return backColor;
}
}
を書いたphase
エンティティは最後に、これは
@Entity()
@Table(name = "evt_phase")
public class EventPhase {
@Id()
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@ManyToOne()
private Phase phase;
@ManyToOne()
private Event event;
@Column(name = "start")
LocalDateTime startDate;
@Column(name = "end")
LocalDateTime endDate;
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setPhase(Phase phase) {
this.phase = phase;
}
public Phase getPhase() {
return phase;
}
public void setEvent(Event event) {
this.event = event;
}
public Event getEvent() {
return event;
}
public void setStartDate(LocalDateTime startDate) {
this.startDate = startDate;
}
public LocalDateTime getStartDate() {
return startDate;
}
public void setEndDate(LocalDateTime endDate) {
this.endDate = endDate;
}
public LocalDateTime getEndDate() {
return endDate;
}
}