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? =/
@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.
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;
}
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.
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
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
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: .
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