Problema de mapeamento com JPA

5 respostas
vjfenix

Olá Pessoal,

Estou estudando JPA e peguei algumas video-aulas para ajudar, porém estou tendo problema em persistir os dados, já fiz uma busca na net mas não obtive sucesso, se alguém puder me ajudar ficarei agradecido.

O erro é o seguinte:

As Entidades mapeadas:

@OneToMany (mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.EAGER )
         private List<Iteration> iterations;
@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "projectId", referencedColumnName ="id")
	private Project project;
@SuppressWarnings("serial")
@Entity
@Table(schema="frasys")
public class Project implements Serializable {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;
	private String name;
	private String description;
	private Date lastDate;
	private String location;
	
	@OneToMany (mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.EAGER )
	private List<Iteration> iterations;

	public Project() {
	}
	
	public void addIteration(Iteration iteration) {
		iterations.add(iteration);
	}

	public final int getId() {
		return id;
	}

	public final void setId(int id) {
		this.id = id;
	}

	public final String getName() {
		return name;
	}

	public final void setName(String name) {
		this.name = name;
	}

	public final String getDescription() {
		return description;
	}

	public final void setDescription(String description) {
		this.description = description;
	}

	public final Date getLastDate() {
		return lastDate;
	}

	public final void setLastDate(Date lastDate) {
		this.lastDate = lastDate;
	}

	public final String getLocation() {
		return location;
	}

	public final void setLocation(String location) {
		this.location = location;
	}

	public final List<Iteration> getIterations() {
		return iterations;
	}

	public final void setIterations(List<Iteration> iterations) {
		this.iterations = iterations;
	}
	
}
package net.fratech.frasys.domain;

import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

@Entity
public class Iteration {

	@Id
	private int id;

	@Column(nullable = false)
	private Date startDate;

	@Column(nullable = false)
	private Date endDate;
	private String name;

	@OneToMany(mappedBy = "iteration", cascade = CascadeType.ALL)
	private List<Item> itens;

	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "projectId", referencedColumnName ="id")
	private Project project;

	public Iteration() {
	}

	public final int getId() {
		return id;
	}

	public final void setId(int id) {
		this.id = id;
	}

	public final Date getStartDate() {
		return startDate;
	}

	public final void setStartDate(Date startDate) {
		this.startDate = startDate;
	}

	public final Date getEndDate() {
		return endDate;
	}

	public final void setEndDate(Date endDate) {
		this.endDate = endDate;
	}

	public final String getName() {
		return name;
	}

	public final void setName(String name) {
		this.name = name;
	}

	public final List<Item> getItens() {
		return itens;
	}

	public final void setItens(List<Item> itens) {
		this.itens = itens;
	}

	public final Project getProject() {
		return project;
	}

	public final void setProject(Project project) {
		this.project = project;
	}

}

5 Respostas

marcos1EM

Uma pequena observação que fiz é que esta faltando vc especificar o @Table(schema=“frasys”) na classe Iteration assim como fez em Project

vjfenix

Opa Marcos,

Só para entendimento, então sempre que eu tiver esse tipo de e relacionamento devo especificar essa anotação na entidade que está obtendo o id??

marcos1EM

Opa Marcos,

Só para entendimento, então sempre que eu tiver esse tipo de e relacionamento devo especificar essa anotação na entidade que está obtendo o id??

Opa
A questão não seria utilizar em todas as classes que está obtendo o id e sim em todoas as classes persistentes, pelo menos é assim que usamos aqui na empresa.
Talvez até funcione sem a anotação @table , eu n testei ainda, aqui no meu trabalho os nomes das classes não são os mesmos da tabela, entao somos obrigados a usar o @table para especificar os nomes dela, mas sei que a espeficicação schema do @table não é necessário para alguns bancos como é o caso do SqlServer.
Porém n faz sentindo usar em uma classe e em outra n, por isso ou tire de todas ou coloque em todas.

Espero ter ajudado
Abs

vjfenix

Opa Marcos,

Só para entendimento, então sempre que eu tiver esse tipo de e relacionamento devo especificar essa anotação na entidade que está obtendo o id??

Opa
A questão não seria utilizar em todas as classes que está obtendo o id e sim em todoas as classes persistentes, pelo menos é assim que usamos aqui na empresa.
Talvez até funcione sem a anotação @table , eu n testei ainda, aqui no meu trabalho os nomes das classes não são os mesmos da tabela, entao somos obrigados a usar o @table para especificar os nomes dela, mas sei que a espeficicação schema do @table não é necessário para alguns bancos como é o caso do SqlServer.
Porém n faz sentindo usar em uma classe e em outra n, por isso ou tire de todas ou coloque em todas.

Espero ter ajudado
Abs

Marcos,

Vou testar aqui.

vlw

vjfenix

Opa Marcos,

Só para entendimento, então sempre que eu tiver esse tipo de e relacionamento devo especificar essa anotação na entidade que está obtendo o id??

Opa
A questão não seria utilizar em todas as classes que está obtendo o id e sim em todoas as classes persistentes, pelo menos é assim que usamos aqui na empresa.
Talvez até funcione sem a anotação @table , eu n testei ainda, aqui no meu trabalho os nomes das classes não são os mesmos da tabela, entao somos obrigados a usar o @table para especificar os nomes dela, mas sei que a espeficicação schema do @table não é necessário para alguns bancos como é o caso do SqlServer.
Porém n faz sentindo usar em uma classe e em outra n, por isso ou tire de todas ou coloque em todas.

Espero ter ajudado
Abs

Marcos,

Vou testar aqui.

vlw

Marcos éra isso mesmo que você disse.

vlw

Criado 21 de setembro de 2010
Ultima resposta 22 de set. de 2010
Respostas 5
Participantes 2