1 package net.sumaris.core.model.referential.taxon;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import lombok.Data;
26 import lombok.experimental.FieldNameConstants;
27 import net.sumaris.core.dao.technical.model.IUpdateDateEntityBean;
28 import net.sumaris.core.model.administration.programStrategy.ReferenceTaxonStrategy;
29 import net.sumaris.core.model.technical.optimization.taxon.TaxonGroup2TaxonHierarchy;
30 import org.hibernate.annotations.Cascade;
31
32 import javax.persistence.*;
33 import java.util.Date;
34 import java.util.List;
35
36
37
38
39
40 @Data
41 @FieldNameConstants
42 @Entity
43 @Table(name = "reference_taxon")
44 public class ReferenceTaxon implements IUpdateDateEntityBean<Integer, Date> {
45
46 @Id
47 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "REFERENCE_TAXON_SEQ")
48 @SequenceGenerator(name = "REFERENCE_TAXON_SEQ", sequenceName="REFERENCE_TAXON_SEQ")
49 private Integer id;
50
51 @Column(name = "update_date")
52 @Temporal(TemporalType.TIMESTAMP)
53 private Date updateDate;
54
55
56 @OneToMany(fetch = FetchType.LAZY, targetEntity = TaxonName.class, mappedBy = TaxonName.Fields.REFERENCE_TAXON)
57 @Cascade(org.hibernate.annotations.CascadeType.DELETE)
58 private List<TaxonName> taxonNames;
59
60 @OneToMany(fetch = FetchType.LAZY, targetEntity = ReferenceTaxonStrategy.class, mappedBy = ReferenceTaxonStrategy.Fields.REFERENCE_TAXON)
61 @Cascade(org.hibernate.annotations.CascadeType.DETACH)
62 private List<ReferenceTaxonStrategy> strategies;
63
64 @OneToMany(fetch = FetchType.LAZY, targetEntity = TaxonGroup2TaxonHierarchy.class, mappedBy = TaxonGroup2TaxonHierarchy.Fields.CHILD_REFERENCE_TAXON)
65 @Cascade(org.hibernate.annotations.CascadeType.DETACH)
66 private List<TaxonGroup2TaxonHierarchy> parentTaxonGroups;
67
68
69 public String toString() {
70 return String.format("ReferenceTaxon{id=%s}", id);
71 }
72 }