Olá!
Ao utilizar o Hibernate, configurei o persistence.xml para criar as tabelas automaticamente.
Precisei fazer uma engenharia reversa do banco para exibir o modelo relacional.
O que eu fiz foi executar um backup do banco (mysql) e então fiz a engenharia reversa através do MySQL Workbench.
O que eu reparei é que não foram definidas as constraints entre as diversas tabelas.
Não sei defini a anotação de relacionamento entre as entidades corretamente.
package br.ufrj.cos.bri.model;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
@Entity
public class Documento implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private long id;
private String numeroPaper;
private String numeroRegistro;
private String numeroMedline;
private String titulo;
private String fonte;
private String textoAbstract;
private Map<String, Author> autores;
private List<MajorSubtopic> majorSubtopic;
private List<MinorSubtopic> minorSubtopic;
private List<Referencia> references;
private List<Citations> citations;
private String textoCompleto;
private String tituloAbstract;
@Id @GeneratedValue
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNumeroPaper() {
return numeroPaper;
}
public void setNumeroPaper(String numeroPaper) {
this.numeroPaper = numeroPaper;
}
public String getNumeroRegistro() {
return numeroRegistro;
}
public void setNumeroRegistro(String numeroRegistro) {
this.numeroRegistro = numeroRegistro;
}
public String getNumeroMedline() {
return numeroMedline;
}
public void setNumeroMedline(String numeroMedline) {
this.numeroMedline = numeroMedline;
}
@Lob
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getFonte() {
return fonte;
}
public void setFonte(String fonte) {
this.fonte = fonte;
}
@Lob
public String getTextoAbstract() {
return textoAbstract;
}
public void setTextoAbstract(String textoAbstract) {
this.textoAbstract = textoAbstract;
}
@ManyToMany(cascade=CascadeType.ALL)
public Map<String, Author> getAutores() {
return autores;
}
public void setAutores(Map<String, Author> autores) {
this.autores = autores;
}
@OneToMany(cascade=CascadeType.ALL)
public List<MajorSubtopic> getMajorSubtopic() {
return majorSubtopic;
}
public void setMajorSubtopic(List<MajorSubtopic> majorSubtopic) {
this.majorSubtopic = majorSubtopic;
}
@OneToMany(cascade=CascadeType.ALL)
public List<MinorSubtopic> getMinorSubtopic() {
return minorSubtopic;
}
public void setMinorSubtopic(List<MinorSubtopic> minorSubtopic) {
this.minorSubtopic = minorSubtopic;
}
@OneToMany(cascade=CascadeType.ALL)
public List<Referencia> getReferences() {
return references;
}
public void setReferences(List<Referencia> references) {
this.references = references;
}
@OneToMany(cascade=CascadeType.ALL)
public List<Citations> getCitations() {
return citations;
}
public void setCitations(List<Citations> citations) {
this.citations = citations;
}
@Lob
public String getTextoCompleto() {
return textoCompleto;
}
public void setTextoCompleto(String textoCompleto) {
this.textoCompleto = textoCompleto;
}
@Lob
public String getTituloAbstract() {
return tituloAbstract;
}
public void setTituloAbstract(String tituloAbstract) {
this.tituloAbstract = tituloAbstract;
}
}
Por que o Hibernate não criou o relacionamento entre as tabelas (através das constraints) e como posso fazer isto?
Em anexo o diagrama resultante da engenharia reversa do banco.
abraços!

