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.model.administration.programStrategy.TaxonGroupStrategy;
28 import net.sumaris.core.model.referential.IItemReferentialEntity;
29 import net.sumaris.core.model.referential.Status;
30 import net.sumaris.core.model.referential.metier.Metier;
31 import org.hibernate.annotations.Cascade;
32
33 import javax.persistence.*;
34 import java.util.Date;
35 import java.util.List;
36
37
38
39
40
41
42
43
44
45
46
47
48 @Data
49 @FieldNameConstants
50 @Entity
51 @Table(name = "taxon_group")
52 public class TaxonGroup implements IItemReferentialEntity {
53
54 @Id
55 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TAXON_GROUP_SEQ")
56 @SequenceGenerator(name = "TAXON_GROUP_SEQ", sequenceName="TAXON_GROUP_SEQ")
57 private Integer id;
58
59 @ManyToOne(fetch = FetchType.LAZY)
60 @JoinColumn(name = "status_fk", nullable = false)
61 private Status status;
62
63 @Column(name = "creation_date", nullable = false)
64 @Temporal(TemporalType.TIMESTAMP)
65 private Date creationDate;
66
67 @Column(name = "update_date")
68 @Temporal(TemporalType.TIMESTAMP)
69 private Date updateDate;
70
71 @Column(length = LENGTH_LABEL)
72 private String label;
73
74 @Column(nullable = false, length = LENGTH_NAME)
75 private String name;
76
77 private String description;
78
79 @Column(length = LENGTH_COMMENTS)
80 private String comments;
81
82 @ManyToOne(fetch = FetchType.LAZY, targetEntity = TaxonGroupType.class)
83 @JoinColumn(name = "taxon_group_type_fk", nullable = false)
84 private TaxonGroupType taxonGroupType;
85
86 @ManyToOne(fetch = FetchType.LAZY, targetEntity = TaxonGroup.class)
87 @JoinColumn(name = "parent_taxon_group_fk")
88 private TaxonGroup parentTaxonGroup;
89
90 @OneToMany(fetch = FetchType.LAZY, targetEntity = TaxonGroupStrategy.class, mappedBy = TaxonGroupStrategy.Fields.TAXON_GROUP)
91 @Cascade(org.hibernate.annotations.CascadeType.DETACH)
92 private List<TaxonGroupStrategy> strategies;
93
94 @OneToMany(fetch = FetchType.LAZY, targetEntity = Metier.class, mappedBy = Metier.Fields.TAXON_GROUP)
95 @Cascade(org.hibernate.annotations.CascadeType.DETACH)
96 private List<Metier> metiers;
97 }