Open leandromoraesrj opened 2 years ago
@Entity
@Entity
@Table(name = "estabelecimento")
public class Estabelecimento
@Id
@SequenceGenerator(name = "se_estabelecimento_generator", sequenceName = "se_estabelecimento", initialValue = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "se_estabelecimento_generator")
@Column(name = "sq_estabelecimento")
private Long id;
@Temporal(TemporalType.DATE)
@Temporal(TemporalType.DATE)
@Column(name = "dt_concessao_inscricao", columnDefinition = "DATE")
private Date dataConcessao;
@ElementCollection
@ElementCollection
@CollectionTable(name = "historico_no_razao_social")
private List<String> historicoRazaoSocial = new ArrayList<>();
@ManyToOne
@JoinColumn(name = "sq_unidade_empresarial")
private UnidadeEmpresarial unidadeEmpresarial;
@OneToMany
@OneToMany(mappedBy = "unidadeEmpresarial")
private List<Estabelecimento> estabelecimentos;
@ManyToMany
@ManyToMany
@JoinTable(name = "estab_tipo_unidade_estab",
joinColumns = @JoinColumn(name = "sq_tipo_unid_estabelecimento"),
inverseJoinColumns = @JoinColumn(name = "sq_estabelecimento"))
private Set<TipoUnidadeEstabelecimento> tiposUnidadeEstabelecimento = new HashSet<>();
OBS1:Quando uma classe não precisa conhecer outra, então não se faz o mapeamento OBS2: no @ManytoMany, a outra classe, sem o @JoinTable, pode ser @ManyToMany(mappedBy = "tiposUnidadeEstabelecimento")
columnDefinition substituirá o sql DDL gerado pelo hibernate para esta coluna em particular, não é portátil e depende de qual banco de dados você está usando. Você pode usá-lo para especificar valor nulo, comprimento, precisão, escala ect.
Para fazer engenharia reversa das tabelas para o java
Criar um projeto JPA:
Importar JPA Entities de uma tabela:
Mapeamento @Entity Mapeamento @Id Mapeamento @Temporal(TemporalType.DATE) Mapeamento @ElementCollection Mapeamento @ManytoMany Mapeamento @OneToMany