ManyToMany Hibernate. - Resolvido

1 resposta
joaoorso

Saudações pessoal do GUJ.
Bem, já li vários tópicos aqui no GUJ E cheguei ao código abaixo :

@Entity
@Table(name="t210sinistroassistencia", schema="florenca")
public class Sinistro extends AppVO {

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "pk.sinistro" ,
			cascade={CascadeType.ALL}
		)
	public List<SinistroDocumentos> getSinistroDocumentos() {
		return sinistroDocumentos;
	}

        /*Esse mapeamento eu usava quando minha tabela intermediária não tinha atributos, e funcionava que era uma beleza
	@ManyToMany(cascade=CascadeType.PERSIST, fetch=FetchType.EAGER, targetEntity=Documentos.class)
	@JoinTable(name="florenca.t311sinistrodocumentos",
			   joinColumns=@JoinColumn (name="codsinistro210"),
			   inverseJoinColumns=@JoinColumn (name="coddocumento310"))
	public Collection<Documentos> getDocumentos() {
		return documentos;
	}*/
@Entity
@Table(name="t310documentos", schema="florenca")
public class Documentos extends AppVO{

       @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.documento")
	public List<SinistroDocumentos> getSinistroDocumentos() {
		return sinistroDocumentos;
	}
package br.com.app.seguros.vo;


import javax.persistence.AssociationOverride;
import javax.persistence.AssociationOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.Table;

@Entity
@Table(name = "t311sinistrodocumentos")
@AssociationOverrides({
@AssociationOverride(name = "pk.documento", joinColumns = @JoinColumn(name = "coddocumento310")),
@AssociationOverride(name = "pk.sinistro", joinColumns = @JoinColumn(name = "codsinistro210"))
        })
public class SinistroDocumentos {
	
	 private SinistroDocumentosPK pk = new SinistroDocumentosPK();
	 private Integer indObrigatoriedade;
	 private Integer indChegada;
	 
	    @EmbeddedId
	    public SinistroDocumentosPK getPk() {
	        return pk;
	    }
	 
	    public void setPk(SinistroDocumentosPK pk) {
	        this.pk = pk;
	    }
	    

	    
	    @Column(name="indobrigatoriedade311", nullable= false)
		public Integer getIndObrigatoriedade() {
			return indObrigatoriedade;
		}

		public void setIndObrigatoriedade(Integer indObrigatoriedade) {
			this.indObrigatoriedade = indObrigatoriedade;
		}

		@Column(name="indchegada311", nullable= false)
		public Integer getIndChegada() {
			return indChegada;
		}

		
		public void setIndChegada(Integer indChegada) {
			this.indChegada = indChegada;
		}	    

}
package br.com.app.seguros.vo;

import java.io.Serializable;

import javax.persistence.Embeddable;
import javax.persistence.ManyToOne;

import br.com.app.veiculo.vo.Sinistro;

@Embeddable
public class SinistroDocumentosPK  implements Serializable { 

	public SinistroDocumentosPK() {
		super();
	}	

	public SinistroDocumentosPK(Documentos documento, Sinistro sinistro) {
		super();
		this.documento = documento;
		this.sinistro = sinistro;
	}

	private static final long serialVersionUID = -5122040443499274534L;
	private Documentos 	documento;
    private Sinistro 	sinistro;
 

 
    @ManyToOne
    public Sinistro getSinistro() {
        return sinistro;
    }
 
    public void setSinistro(Sinistro Sinistro) {
        this.sinistro = Sinistro;
    }
    
    @ManyToOne
	public Documentos getDocumento() {
		return documento;
	}

	public void setDocumento(Documentos documento) {
		this.documento = documento;
	}
    

}

Logo apos ter um objeto SINISTO populado dou um save nele e tenho o seguinte erro:

SEVERE: ERROR: relation "t311sinistrodocumentos" does not exist
org.hibernate.exception.SQLGrammarException: could not retrieve snapshot: [br.com.app.seguros.vo.SinistroDocumentos#component[documento,sinistro]{documento=br.com.app.seguros.vo.Documentos#4, sinistro=br.com.app.veiculo.vo.Sinistro#41}]

Ou seja não está encontrando minha FK em t311sinistrodocumentos.

Preciso muito da ajuda de voces !
Obrigado.

1 Resposta

joaoorso

NÃOOOOOOO !
O que que é isso :oops:
Que erro mais tosco, tô envergonhado !

Olha :

@Entity
@Table(name = "t311sinistrodocumentos", schema="florenca")

Eu não tinha colocado o schema. Agora coloquei e funcionou redondo.

hauhauahauaha. Essa foi boa !
Valeu galera !

Criado 22 de abril de 2010
Ultima resposta 22 de abr. de 2010
Respostas 1
Participantes 1