Erro no mapeamento 1:N

0 respostas
C

Tenho duas classes: Ocorrencias e Hst_Ocorrencias(historico das ocorrencias).
O relacionamento é pai e filho, ou seja, cada ocorrencia tem vários historicos (1:N) só que a chave da ocorrencia é oco_numero e a chave do historico é hst_oco_numero + hst_oco_data. Quando mando o hibernate gerar as tabelas ele esta gerando a chave do historico só o hst_oco_numero. Eis o codigo das 2 classes

classe ocorrencia

package br.com.europa.modelo;

import java.sql.Date;
import java.util.Set;

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

@Entity
public class Ocorrencia {
	
	/*
	 * membros
	 */
	
	@Id @GeneratedValue
	private Long oco_numero;
	
	@Column(nullable=false)
	private Date oco_data;
	
	@Column(length=20, nullable=false)
	private String oco_abertopor;
	
	@ManyToOne
	@JoinColumn(name="oco_cliente", nullable=false)
	private Cliente cliente;
	
	@ManyToOne
	@JoinColumn(name="oco_tp_ocorrencia", nullable=false)
	private TipoOcorrencia tipoOcorrencia;
	
	@ManyToOne
	@JoinColumn(name="oco_distribuidor", nullable=false)
	private Distribuidor distribuidor;
	
	@Column(columnDefinition="LONGTEXT")
	private String oco_obs_abertura;
	
	private Date oco_dtconclusao;
	
	@Column(length=20)
	private	String oco_concluinte;
	
	@Column(columnDefinition="LONGTEXT")
	private String oco_obs_conclusao;
	
	@OneToMany(mappedBy="ocorrencia")
	private Set<Hst_Ocorrencia> hst_Ocorrencia;
	
	/*
	 * construtores
	 */
	
	public Ocorrencia(){
		
	}
	
	/*
	 * metodos
	 */

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Distribuidor getDistribuidor() {
		return distribuidor;
	}

	public void setDistribuidor(Distribuidor distribuidor) {
		this.distribuidor = distribuidor;
	}

	public String getOco_abertopor() {
		return oco_abertopor;
	}

	public void setOco_abertopor(String oco_abertopor) {
		this.oco_abertopor = oco_abertopor;
	}

	public String getOco_concluinte() {
		return oco_concluinte;
	}

	public void setOco_concluinte(String oco_concluinte) {
		this.oco_concluinte = oco_concluinte;
	}

	public Date getOco_data() {
		return oco_data;
	}

	public void setOco_data(Date oco_data) {
		this.oco_data = oco_data;
	}

	public Date getOco_dtconclusao() {
		return oco_dtconclusao;
	}

	public void setOco_dtconclusao(Date oco_dtconclusao) {
		this.oco_dtconclusao = oco_dtconclusao;
	}

	public Long getOco_numero() {
		return oco_numero;
	}

	public void setOco_numero(Long oco_numero) {
		this.oco_numero = oco_numero;
	}

	public String getOco_obs_abertura() {
		return oco_obs_abertura;
	}

	public void setOco_obs_abertura(String oco_obs_abertura) {
		this.oco_obs_abertura = oco_obs_abertura;
	}

	public String getOco_obs_conclusao() {
		return oco_obs_conclusao;
	}

	public void setOco_obs_conclusao(String oco_obs_conclusao) {
		this.oco_obs_conclusao = oco_obs_conclusao;
	}

	public TipoOcorrencia getTipoOcorrencia() {
		return tipoOcorrencia;
	}

	public void setTipoOcorrencia(TipoOcorrencia tipoOcorrencia) {
		this.tipoOcorrencia = tipoOcorrencia;
	}

	
	public Set<Hst_Ocorrencia> getHst_Ocorrencia() {
		return hst_Ocorrencia;
	}

	public void setHst_Ocorrencia(Set<Hst_Ocorrencia> hst_Ocorrencia) {
		this.hst_Ocorrencia = hst_Ocorrencia;
	}

}

classe Hst_Ocorrencia

package br.com.europa.modelo;

import java.sql.Timestamp;

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

@Entity
public class Hst_Ocorrencia {
	
	/*
	 * membros
	 */
	
	@Id
	private Timestamp hst_oco_data;	
	
	@ManyToOne
	@JoinColumn(name="hst_oco_numero", nullable=false)
	private Ocorrencia ocorrencia;	

	@Column(length=20)
	private String hst_oco_abertopor;
	
	@Column(columnDefinition="LONGTEXT")
	private String hst_oco_obs;
	
	/*
	 * construtores
	 */
	
	public Hst_Ocorrencia(){
		
	}
	
	/*
	 * metodos
	 */

	public String getHst_oco_abertopor() {
		return hst_oco_abertopor;
	}

	public void setHst_oco_abertopor(String hst_oco_abertopor) {
		this.hst_oco_abertopor = hst_oco_abertopor;
	}

	public Timestamp getHst_oco_data() {
		return hst_oco_data;
	}

	public void setHst_oco_data(Timestamp hst_oco_data) {
		this.hst_oco_data = hst_oco_data;
	}

	public String getHst_oco_obs() {
		return hst_oco_obs;
	}

	public void setHst_oco_obs(String hst_oco_obs) {
		this.hst_oco_obs = hst_oco_obs;
	}

	public Ocorrencia getOcorrencia() {
		return ocorrencia;
	}

	public void setOcorrencia(Ocorrencia ocorrencia) {
		this.ocorrencia = ocorrencia;
	}	
	
}

O que está faltando no mapeamento para que a tabela no banco seja criada com a chave composta de hst_oco_numero + hst_oco_data

Grato

Criado 17 de agosto de 2006
Respostas 0
Participantes 1