@Entity
@Table(name = "T_PHONE")
public class Phone {
private Long id;
private String number;
private Person person;
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "NUMBER")
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PERSON_ID")
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
@Entity
@Table(name = "T_PERSON")
public class Person {
private List<Phone> phones = new ArrayList<>();
@OneToMany(mappedBy = "person", fetch = FetchType.LAZY)
public List<Phone> getPhones() {
return phones;
}
}
@Entity
@Table(name = "T_PROJECT")
public class Project {
private Long id;
private String title;
private List<Geek> geeks = new ArrayList<Geek>();
@Id
@GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "TITLE")
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@ManyToMany(mappedBy="projects")
public List<Geek> getGeeks() {
return geeks;
}
public void setGeeks(List<Geek> geeks) {
this.geeks = geeks;
}
}
private List<Project> projects = new ArrayList<>();
@ManyToMany
@JoinTable(
name="T_GEEK_PROJECT",
joinColumns={@JoinColumn(name="GEEK_ID", referencedColumnName="ID")},
inverseJoinColumns={@JoinColumn(name="PROJECT_ID", referencedColumnName="ID")})
public List<Project> getProjects() {
return projects;
}
@Embeddable
public class Period {
private Date startDate;
private Date endDate;
@Column(name ="START_DATE")
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
@Column(name ="END_DATE")
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
}
private Period projectPeriod;
@Embedded
public Period getProjectPeriod() {
return projectPeriod;
}
public void setProjectPeriod(Period projectPeriod) {
this.projectPeriod = projectPeriod;
}
create table T_PROJECT (
id bigint generated by default as identity,
END_DATE timestamp,
START_DATE timestamp,
projectType varchar(255),
TITLE varchar(255),
primary key (id)
)
private List<Period> billingPeriods = new ArrayList<Period>();
@ElementCollection
@CollectionTable(
name="T_BILLING_PERIOD",
joinColumns=@JoinColumn(name="PROJECT_ID")
)
public List<Period> getBillingPeriods() {
return billingPeriods;
}
public void setBillingPeriods(List<Period> billingPeriods) {
this.billingPeriods = billingPeriods;
}