Autor |
Mensagem |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/08/2007 16:00:03
|
rodrigo.freitas
Equipe
Membro desde: 17/04/2007 16:43:33
Mensagens: 37
Localização: Belo Horizonte - MG
Offline
|
Alguem sabe como fazer o mapeamento de chave múltipla??
Tentei olhar na documentação do hibernate nao consegui nada...
Code:
@Entity
public class Componentediretoria {
@Id
protected ComponentediretoriaPk pk;
protected Associado associado;
@SuppressWarnings("unused")
@Column(name="cddiretoria", nullable=false, updatable=false, insertable=false)
private Integer diretoria;
@SuppressWarnings("unused")
@Column(name="cdcargodiretoria", nullable=false, updatable=false, insertable=false)
private Integer cargoDiretoria;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="cdassociado")
public Associado getAssociado() {
return associado;
}
public void setAssociado(Associado associado) {
this.associado = associado;
}
public Diretoria getDiretoria() {
return pk.getDiretoria();
}
public CargoDiretoria getCargoDiretoria() {
return pk.getCargoDiretoria();
}
public void setDiretoria(Diretoria diretoria) {
pk.setDiretoria(diretoria);
}
public void setCargoDiretoria(CargoDiretoria cargoDiretoria){
pk.setCargoDiretoria(cargoDiretoria);
}
@Embeddable
private class ComponentediretoriaPk implements Serializable {
protected Diretoria diretoria;
protected CargoDiretoria cargoDiretoria;
@ManyToOne
public CargoDiretoria getCargoDiretoria() {
return cargoDiretoria;
}
@ManyToOne
public Diretoria getDiretoria() {
return diretoria;
}
public void setDiretoria(Diretoria diretoria) {
this.diretoria = diretoria;
}
public void setCargoDiretoria(CargoDiretoria cargoDiretoria) {
this.cargoDiretoria = cargoDiretoria;
}
}
}
Criei uma classe interna para representar a chave...
Mas quando vou ligar o JBOSS está dando o seguinte erro:
Code:
15:54:26,968 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in null: Initialization of bean failed; nested exception is org.hibernate.MappingException: Could not determine type for: br.org.assima.siteassima.bean.Associado, for columns: [org.hibernate.mapping.Column(associado)]
org.hibernate.MappingException: Could not determine type for: br.org.assima.siteassima.bean.Associado, for columns: [org.hibernate.mapping.Column(associado)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
|
Rodrigo Duarte de Freitas
Desenvolvedor de Sistemas
LinkCom - Soluçoes em T.I
Belo Horizonte - MG
rodrigo.freitas@linkcom.com.br - www.linkcom.com.br
Telefone/Fax: (31) 3239-4000 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 28/08/2007 22:03:45
|
Igor.Costa
MultiAction
Membro desde: 22/06/2007 15:13:22
Mensagens: 79
Localização: Vitória da Conquista - BA
Offline
|
posta o bean Associado...
A próposito, seria bom você implementar os relacionamentos sem chave multipla, isso não é recomendado nem pelo Hibernate... dá uma olhada em http://www.neoframework.org/forum/posts/list/125.page
vlw
|
Igor Costa
MasterSoft Sistemas Ltda.
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 29/08/2007 11:37:40
|
rodrigo.freitas
Equipe
Membro desde: 17/04/2007 16:43:33
Mensagens: 37
Localização: Belo Horizonte - MG
Offline
|
É eu sei disso, o problema que o banco é usado por outra aplicação e não tem jeito de mudar.
Mas o bean associado é o seguinte:
Code:
@Entity
@SequenceGenerator(name = "gen_associado", sequenceName = "gen_associado")
public class Associado {
protected Integer cdassociado;
protected String nome;
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="gen_associado")
public Integer getCdassociado() {
return cdassociado;
}
public String getNome() {
return nome;
}
public void setCdassociado(Integer cdassociado) {
this.cdassociado = cdassociado;
}
public void setNome(String nome) {
this.nome = nome;
}
}
E a annotation @Entity é do pacote "javax.persistence.Entity".
|
Rodrigo Duarte de Freitas
Desenvolvedor de Sistemas
LinkCom - Soluçoes em T.I
Belo Horizonte - MG
rodrigo.freitas@linkcom.com.br - www.linkcom.com.br
Telefone/Fax: (31) 3239-4000 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/08/2007 17:46:05
|
rogel.garcia
Xiita
Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline
|
@SuppressWarnings("unused")
@Column(name="cddiretoria", nullable=false, updatable=false, insertable=false)
private Integer diretoria;
@SuppressWarnings("unused")
@Column(name="cdcargodiretoria", nullable=false, updatable=false, insertable=false)
private Integer cargoDiretoria;
@ManyToOne
public CargoDiretoria getCargoDiretoria() {
return cargoDiretoria;
}
@ManyToOne
public Diretoria getDiretoria() {
return diretoria;
}
1º - Vc está mapeando os campos cddiretoria e cdcargodiretoria 2x..(acho que o hibernate nao suporta isso)
2º - Faltou o @JoinColumn no getDiretoria e no getCargoDiretoria
O NEO não suporta CRUDs para entidades de chave múltipla...
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/08/2007 20:29:10
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Pessoal.. quem quiser mapear chave múltipla.. ou passou por algum problema.. no mapeamento de chave múltipla.. segue código para que possam consultar posteriormente.. mais lembrando que telas de detalhe não é suportado pelo neo...
Code:
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
@Entity
@org.hibernate.annotations.Entity(mutable = false)
public class Componentediretoria implements Serializable {
private static final long serialVersionUID = 1L;
protected ComponentediretoriaId id;
protected Diretoria diretoria;
protected CargoDiretoria cargodiretoria;
protected Associado associado;
protected String chapa;
@javax.persistence.Id
public ComponentediretoriaId getId() {
return id;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cdassociado")
public Associado getAssociado() {
return associado;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cdcargodiretoria", insertable = false, updatable = false)
public CargoDiretoria getCargodiretoria() {
return cargodiretoria;
}
public String getChapa() {
return chapa;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cddiretoria", insertable = false, updatable = false)
public Diretoria getDiretoria() {
return diretoria;
}
public void setAssociado(Associado associado) {
this.associado = associado;
}
public void setCargodiretoria(CargoDiretoria cargodiretoria) {
this.cargodiretoria = cargodiretoria;
}
public void setChapa(String chapa) {
this.chapa = chapa;
}
public void setDiretoria(Diretoria diretoria) {
this.diretoria = diretoria;
}
public void setId(ComponentediretoriaId componentediretoriaId) {
this.id = componentediretoriaId;
}
}
e o ID
Code:
import java.io.Serializable;
import javax.persistence.Embeddable;
@Embeddable
public class ComponentediretoriaId implements Serializable {
private static final long serialVersionUID = 1L;
protected Integer cddiretoria;
protected Integer cdcargodiretoria;
public Integer getCdcargodiretoria() {
return cdcargodiretoria;
}
public ComponentediretoriaId() {}
public ComponentediretoriaId(Integer cddiretoria, Integer cdcargodiretoria) {
this.cddiretoria = cddiretoria;
this.cdcargodiretoria = cdcargodiretoria;
}
public Integer getCddiretoria() {
return cddiretoria;
}
public void setCdcargodiretoria(Integer cdcargodiretoria) {
this.cdcargodiretoria = cdcargodiretoria;
}
public void setCddiretoria(Integer cddiretoria) {
this.cddiretoria = cddiretoria;
}
@Override
public boolean equals(Object arg0) {
if (arg0 instanceof ComponentediretoriaId) {
ComponentediretoriaId that = (ComponentediretoriaId) arg0;
return this.cdcargodiretoria.equals(that.cdcargodiretoria) && this.cddiretoria.equals(that.cddiretoria);
}
return false;
}
@Override
public int hashCode() {
return cddiretoria.hashCode() + cdcargodiretoria.hashCode();
}
}
ehehe.. dps de um tempo quebrando a cabeça na linkcom.. está ai.. até para quem tinha perguntado antes!!! até!
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
|