package com.project.model; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import javax.validation.constraints.NotBlank; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; @Entity @Table(name="projekt") //potrzebne tylko jeżeli nazwa tabeli w bazie danych ma być inna od nazwy klasy public class Projekt { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="projekt_id") //tylko jeżeli nazwa kolumny w bazie danych ma być inna od nazwy zmiennej private Integer projektId; //lepszym rozwiązaniem jest przechowywanie komunikatów poza kodem źródłowym np. w plikach *.properties @NotNull @NotBlank(message = "Pole nazwa nie może być puste!") @Size(min = 3, max = 50, message = "Nazwa musi zawierać od {min} do {max} znaków!") @Column(nullable = false, length = 50) private String nazwa; @NotNull @Size(max = 50, message = "Opis może zawierać do {max} znaków!") @Column(nullable = false, length = 200) private String opis; @NotNull @CreationTimestamp @Column(name = "dataczas_utworzenia", nullable = false, updatable = false) private LocalDateTime dataCzasUtworzenia; @NotNull @UpdateTimestamp @Column(name = "data_oddania", nullable = false) private LocalDate dataOddania; @OneToMany(mappedBy = "projekt") @JsonIgnoreProperties({"projekt"}) private List zadania; @JsonIgnoreProperties({"projekty"}) @ManyToMany @JoinTable( name = "projekt_student", joinColumns = {@JoinColumn(name="projekt_id")}, inverseJoinColumns = {@JoinColumn(name="student_id")} ) private Set studenci; public Set getStudenci() { return studenci; } public void setStudenci(Set studenci) { this.studenci = studenci; } public List getZadania() { return zadania; } public void setZadania(List zadania) { this.zadania = zadania; } public Integer getProjektId() { return projektId; } public void setProjektId(Integer projektId) { this.projektId = projektId; } public String getNazwa() { return nazwa; } public void setNazwa(String nazwa) { this.nazwa = nazwa; } public String getOpis() { return opis; } public void setOpis(String opis) { this.opis = opis; } public LocalDateTime getDataCzasUtworzenia() { return dataCzasUtworzenia; } public void setDataCzasUtworzenia(LocalDateTime dataCzasUtworzenia) { this.dataCzasUtworzenia = dataCzasUtworzenia; } public LocalDate getDataOddania() { return dataOddania; } public void setDataOddania(LocalDate dataOddania) { this.dataOddania = dataOddania; } public Projekt() {} public Projekt(Integer projektId, String nazwa, String opis, LocalDateTime dataCzasUtworzenia, LocalDate dataOddania) { super(); this.projektId = projektId; this.nazwa = nazwa; this.opis = opis; this.dataCzasUtworzenia = dataCzasUtworzenia; this.dataOddania = dataOddania; } public Projekt(String nazwa, String opis, LocalDate dataOddania) { super(); this.nazwa = nazwa; this.opis = opis; this.dataOddania = dataOddania; } }