JPA não cria tabelas de relacionamentos 1:N

2 respostas
MandicaBrito
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:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
	version="2.0">
	<persistence-unit name="myJob360" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

			<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>
</persistence>
Lado 1 do relacionamento:
@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;
	}
Lado N do relacionamento:
@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;
	}

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á ^^

2 Respostas

Hebert_Coelho

Esse post explica como funciona os relacionamentos e o que deve ou não ser criado automaticamente: JPA: Mini Livro - Primeiros passos e conceitos detalhados.

MandicaBrito

Uhn…obrigada, vou dar uma olhada.

Criado 20 de novembro de 2012
Ultima resposta 20 de nov. de 2012
Respostas 2
Participantes 2