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.