Erro de mapeamento?

Olá galera,
fiz o mapeamento nas minhas classes e quando fui pra testar o que eu fiz aquie deu o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError at face.JanelaAddTabela$1.actionPerformed(JanelaAddTabela.java:89) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) Caused by: org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: dominio.Fato.chaveestrangeira at org.hibernate.cfg.annotations.CollectionBinder.getCollectionBinder(CollectionBinder.java:266) at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1448) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:754) at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:546) at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:291) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) at dominio.HibernateFactory.<clinit>(HibernateFactory.java:20) ... 26 more

Acredito que esse erro tenha sido por causa do mapeamento que eu fiz porque estava rodando direitinho e dps do mapeamento que ficou dessa forma.
Alguem sabe me dizer o porque desse erro? =/

agradeço a ajuda de vocês!

[]'s

@OneToMany, @ManyToMany or @CollectionOfElements: dominio.Fato.chaveestrangeira  

Você está tentando fazer algum desses mapeamentos em um atributo que não é uma Collection, nesse caso (se for um relacionamento bidirecional) utilize @ManyToOne.

Qualquer coisa poste seu código ai.

[]'s

Daeh Icegatti, blz cara?

Seguinte cara, vou te explicar melhor. Esta dando esse problema ai no relacionamento entre fato e chaveestrangeira.
FATO ( idfato , idcubo)
CHAVEESTRANGEIRA (idchaveestrangeira , idfato, iddimensão)
sendo assim, um FATO pode ter varias chaves estrangeiras e uma chave estrangeira esta contida apenas em um fato.
Então eu fiz o mapeamento da seguinte forma mas que pelo jeito esta errado =/ :
Fato

[code]@Entity
@SequenceGenerator(name=“SEQ”, sequenceName=“hibernate_sequence4”, allocationSize = 1)
public class Fato {

@Id 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="SEQ")
private Long idfato;

private Long idcubo;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="idcubo")
private Cubo cubo;

@OneToMany (mappedBy="chaveestrangeira")
private ChaveEstrangeira chaveestrangeira;


public ChaveEstrangeira getChaveestrangeira() {
	return chaveestrangeira;
}
public void setChaveestrangeira(ChaveEstrangeira chaveestrangeira) {
	this.chaveestrangeira = chaveestrangeira;
}
public Cubo getCubo() {
	return cubo;
}
public void setCubo(Cubo cubo) {
	this.cubo = cubo;
}
public Long getIdfato() {
	return idfato;
}
public void setIdfato(Long idfato) {
	this.idfato = idfato;
}

public Long getIdcubo() {
	return idcubo;
}
public void setIdcubo(Long idcubo) {
	this.idcubo = idcubo;
}

}[/code]

ChaveEstrangeira

[code]@Entity
@SequenceGenerator(name=“SEQ”, sequenceName=“hibernate_sequence7”, allocationSize = 1)
public class ChaveEstrangeira {

@Id 
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ")
private Long idchaveestrangeira;


private Long idfato;
private Long iddimensao;

@OneToOne (cascade = CascadeType.ALL)
@JoinColumn(name= "iddimensao")
private Dimensao dimensao;

@ManyToOne
private Fato fato;

@ManyToOne
private Ligacao ligacao;


public Ligacao getLigacao() {
	return ligacao;
}
public void setLigacao(Ligacao ligacao) {
	this.ligacao = ligacao;
}
public Fato getFato() {
	return fato;
}
public void setFato(Fato fato) {
	this.fato = fato;
}
public Dimensao getDimensao() {
	return dimensao;
}
public void setDimensao(Dimensao dimensao) {
	this.dimensao = dimensao;
}
public Long getIdchaveestrangeira() {
	return idchaveestrangeira;
}
public void setIdchaveestrangeira(Long idchaveestrangeira) {
	this.idchaveestrangeira = idchaveestrangeira;
}
public Long getIdfato() {
	return idfato;
}
public void setIdfato(Long idfato) {
	this.idfato = idfato;
}
public Long getIddimensao() {
	return iddimensao;
}
public void setIddimensao(Long iddimensao) {
	this.iddimensao = iddimensao;
}

}[/code]

Está ai amigo :thumbup:

vlw pela ajuda!!!

O que você está querendo fazer é um relacionamento bidirecional de 1 --|| n, o certo de seus mapeamentos seria assim:

Na classe Fato:

@OneToMany (mappedBy="fato")  
private List<ChaveEstrangeira> chaveestrangeira;  

Aqui você está definindo que 1 Fato pode ter n chaves estrangeiras, e no mappedBy vc defini que na classe ChaveEstrangeira no atributo fato está o mapeamento para este relacionamento.

Na classe ChaveEstrangeira:

@ManyToOne 
@JoinColumn(name="idfato")
private Fato fato;

Aqui você defini qual coluna está a FK desse seu relacionamento, neste caso idfato.

Ve se rola.

[]'s

Aew brother, eu fiz daeh foi dando erro nos mapeamentos de um para varios e fui corrigindo conforme vc me explicou e agora deu erro em um mapeamento de 1 para 1 entre ChavePrimaria e Tabela.
ChavePrimaria(idchaveprimaria)
Tabela(idtabela, nome, idchaveprimaria)

ChavePrimaria

[code]@Entity
@SequenceGenerator(name=“SEQ”, sequenceName=“hibernate_sequence8”, allocationSize = 1)
public class ChavePrimaria {

@Id 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ")
private Long idchaveprimaria;

@OneToOne (mappedBy= "tabela")
private Tabela tabela;

@OneToMany (mappedBy = "chaveprimaria")
private List<Atributo> atributo;




public Tabela getTabela() {
	return tabela;
}

public void setTabela(Tabela tabela) {
	this.tabela = tabela;
}


public List<Atributo> getAtributo() {
	return atributo;
}

public void setAtributo(List<Atributo> atributo) {
	this.atributo = atributo;
}

public Long getIdchaveprimaria() {
	return idchaveprimaria;
}

public void setIdchaveprimaria(Long idchaveprimaria) {
	this.idchaveprimaria = idchaveprimaria;
}

}[/code]

Tabela

[code]@Entity
@SequenceGenerator(name=“SEQ”,sequenceName=“hibernate_sequence2”, allocationSize = 1)
public class Tabela {

@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ")
private Long idtabela;

@Column (nullable = true, length = 50)
private String nome;

@OneToOne (cascade= CascadeType.ALL)
@JoinColumn (name="chaveprimaria")
private ChavePrimaria chaveprimaria;

@OneToMany (mappedBy = "tabela")
private List<Atributo> atributo;



public List<Atributo> getAtributo() {
	return atributo;
}
public void setAtributo(List<Atributo> atributo) {
	this.atributo = atributo;
}
public ChavePrimaria getChaveprimaria() {
	return chaveprimaria;
}
public void setChaveprimaria(ChavePrimaria chaveprimaria) {
	this.chaveprimaria = chaveprimaria;
}
public Long getIdtabela() {
	return idtabela;
}
public void setIdtabela(Long idtabela) {
	this.idtabela = idtabela;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}

}[/code]

Erro

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError at face.JanelaAddTabela$1.actionPerformed(JanelaAddTabela.java:89) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on dominio.Tabela.chaveprimaria references an unknown entity: dominio.ChavePrimaria at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81) at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:456) at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:438) at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:309) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) at dominio.HibernateFactory.<clinit>(HibernateFactory.java:20) ... 26 more

pq esta dando esse erro agora? =/

Dois detalhes no seu relacionamento OneToOne:

@OneToOne (mappedBy= "chaveprimaria")  
private Tabela tabela;

No mappedBy vc deve colocar qual o atributo da sua classe Tabela que fornece os detalhes deste mapeamento, no seu caso o atributo chaveprimaria.

@OneToOne (cascade= CascadeType.ALL)  
@JoinColumn (name="idchaveprimaria")  
private ChavePrimaria chaveprimaria;

Aqui no @JoinColumn vc deve definir qual o campo na table Tabela é a FK para ChavePrimaria no seu caso: idchaveprimaria

:thumbup:

[]'s

Eu alterei o que você me falou mas continuou dando erro =/

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError at face.JanelaAddTabela$1.actionPerformed(JanelaAddTabela.java:89) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on dominio.Tabela.chaveprimaria references an unknown entity: dominio.ChavePrimaria at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:81) at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:456) at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:438) at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:309) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) at dominio.HibernateFactory.<clinit>(HibernateFactory.java:20) ... 26 more

Por que será que esta continuando com esse erro? :frowning:

Estranho cara, seus mapeamentos aparentemente estão certos :? .

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on dominio.Tabela.chaveprimaria references an unknown entity: dominio.ChavePrimaria  

Parece que que ele não está reconhecendo ChavePrimaria como uma entidade, e o erro está exatamente na sua classe Tabela onde vc definiu um atributo do tipo ChavePrimaria, da uma conferida no seu código, nos seus mapeamentos :thumbup: .

[]'s

Consegui resolver aquele problema. Era porque eu não tinha declarado a classe chaveprimaria no HIbernateFactory.
Mas agora esta dando outro erro( pra variar :? ):

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError at face.JanelaAddTabela$1.actionPerformed(JanelaAddTabela.java:89) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6041) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5806) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4413) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2440) at java.awt.Component.dispatchEvent(Component.java:4243) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121) Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: dominio.ChaveEstrangeira column: iddimensao (should be mapped with insert="false" update="false") at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:670) at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:692) at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:714) at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:468) at org.hibernate.mapping.RootClass.validate(RootClass.java:215) at org.hibernate.cfg.Configuration.validate(Configuration.java:1135) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1320) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) at dominio.HibernateFactory.<clinit>(HibernateFactory.java:21) ... 26 more

Sabe me dizer que erro eh esse? =/

vlw!!
abraço!