Relacionamento ManyToMany Com Atributos

2 respostas
novato25

Bom dia!

Gostaria de mapear um relacionamento ManyToMany Com Atributos, só não sei exatamente como fazer isso. O que estou fazendo de errado? Segue o código abaixo:

Classe Cronograma

@Entity
@Table(name = "tb_cronograma")
public class Cronograma implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="num_ano", nullable=false)
	private Long numeroAno;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="dth_cadastro", nullable=false)
	private Date dataCadastro;
	
	//gets e sets
}

Classe Etapa

@Entity
@Table(name = "tb_etapa")
public class Etapa implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name="cod_etapa", nullable=false)
	private Long codigo;
	
	@Column(name="dsc_etapa", nullable=false)
	private String descricao;
	
	//gets e sets
}

Classe CronogramaEtapaPk

@Embeddable
public class CronogramaEtapaPk implements Serializable {

	private static final long serialVersionUID = 1L;

	@Column(name = "cod_etapa", nullable = false)
	private Long codigoEtapa;
	
	@Column(name = "num_ano", nullable = false)
	private Long numeroAno;
	
}

Classe CronogramaEtapa

@Entity
@Table(name = "tb_cronograma_etapa")
public class CronogramaEtapa implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	@EmbeddedId
	private CronogramaEtapaId cronogramaEtapaPk;
	
	@ManyToOne
	@JoinColumn(name = "cod_etapa", referencedColumnName = "cod_etapa", insertable = false, updatable = false, nullable = false)
	private Etapa etapa;
	
	@ManyToOne
	@JoinColumn(name = "num_ano", referencedColumnName = "num_ano", insertable = false, updatable = false, nullable = false)
	private Cronograma cronograma;
	
	@Temporal(TemporalType.DATE)
	@Column(name="dat_inicial_etapa", nullable=false)
	private Date dataInicialEtapa;
	
	@Temporal(TemporalType.DATE)
	@Column(name="dat_final_etapa", nullable=false)
	private Date dataFinalEtapa;

	//gets e sets
}

OBS.: A tabela etapa já está definida (code table). Ao salvar um CronogramaEtapa, caso não exista o registro na tabela Cronograma, este deve ser persistido. Agradeço a Ajuda.

2 Respostas

Hebert_Coelho

Aqui mostra como fazer: http://uaihebert.com/?p=1622&page=22

novato25

Oi Hebert,

eu já tinha visto assim. O problema é que eu preciso de um método dentro de CronogramaEtapa que retorne o ID e assim terei 2 campos ID nesta classe. Sabe se tem como fazer do jeito que eu quero? Agradeço a ajuda.

Criado 9 de maio de 2013
Ultima resposta 9 de mai. de 2013
Respostas 2
Participantes 2