Boa noite,
Estou fazendo um projeto web que usa JSF e JPA e ao criar tabelas com o relacionamento 1:N, unidirecional, percebi que ele não cria a tabela de apoio, contendo os ids das tabelas relacionadas.
Segue o que estou fazendo:
Persistence.xml:
[code]<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.ejb.HibernatePersistence
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/myjob360" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="mysql" />
</properties>
</persistence-unit>
[/code]
Lado 1 do relacionamento:
[code]@Entity
@Table(name=“formulario_configurado”)
public class FormularioConfigurado {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="descricao")
private String descricao;
@OneToMany
@JoinColumn(name="id")
private List<Pergunta> perguntas = new ArrayList<Pergunta>();
public FormularioConfigurado(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public List<Pergunta> getPerguntas() {
return perguntas;
}
public void setPerguntas(List<Pergunta> perguntas) {
this.perguntas = perguntas;
}
[/code]
Lado N do relacionamento:
[code]@Entity
@Table(name=“pergunta”)
public class Pergunta {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id", nullable=false)
private int id;
@Column(name="enunciado", nullable=false)
private String enunciado;
@Enumerated(EnumType.STRING)
private TipoPergunta tipoPergunta;
@ManyToOne(fetch=FetchType.EAGER)
private Categoria categoria;
public Pergunta(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEnunciado() {
return enunciado;
}
public void setEnunciado(String enunciado) {
this.enunciado = enunciado;
}
public TipoPergunta getTipoPergunta() {
return tipoPergunta;
}
public void setTipoPergunta(TipoPergunta tipoPergunta) {
this.tipoPergunta = tipoPergunta;
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
[/code]
Ele não deveria criar uma tabela contendo os ids dessas duas?
Quero ver os dados dessa lista, mas não sei onde ele salvou.
Eu fiz para outras classes, o mesmo relacionamento de 1:N e além delas próprias, ele me criou uma organizacao_usuario (1 Organização tem N Usuários), com os ids das duas tabelas, referenciando-as (FK), que, creio, é onde vão ficar os dados que serão salvos na lista.
Alguma ideia do que está acontecendo?
Pesquisando por ai e ainda não consegui descobrir o porquê, nem como resolver.
Agradeço desde já ^^