[Resolvido] Erro ao Mapear Classes, criar tabelas

5 respostas
desk

Olá pessoal, fiz o mapeamento de 4 classes (usuario, endereco, cidade, estado) e na hora de criar as tabelas tá dando uma exception, tentei varias coisas e até agora nada.. não sei mais o que fazer.

Gostaria de saber o porque dessa exception, o que estou fazendo de errado??

segue as classes + persistence + exception:

Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.mapping.SimpleValue.<init>(Lorg/hibernate/mapping/Table;)V
	at org.hibernate.cfg.annotations.SimpleValueBinder.make(SimpleValueBinder.java:298)
	at org.hibernate.cfg.annotations.PropertyBinder.makePropertyAndValue(PropertyBinder.java:188)
	at org.hibernate.cfg.annotations.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:200)
	at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1885)
	at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:738)
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:702)
	at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:631)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:352)
	at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345)
	at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1416)
	at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1044)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:276)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:360)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:55)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
	at br.com.lioneletronicos.util.CriaEntityManagerParaAtualizarDB.main(CriaEntityManagerParaAtualizarDB.java:8)
<persistence-unit name="lion">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>br.com.lion.modelo.Usuario</class>
		<class>br.com.lion.modelo.Endereco</class>
		<class>br.com.lion.modelo.Cidade</class>
		<class>br.com.lion.modelo.Estado</class>
		
		<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
			<!-- poderia ser: create,create-drop -->
			<property name="hibernate.hbm2ddl.auto" value="update"/>
			<property name="hibernate.show_sql" value="true"/>
			<property name="hibernate.format_sql" value="true"/>
			
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/lion"/>
			<property name="javax.persistence.jdbc.user" value="root"/>
			<property name="javax.persistence.jdbc.password" value=""/>
		</properties>
	</persistence-unit>
@Entity
public class Usuario {
	@Id
	@GeneratedValue
	private Long id ;
	private String nome ;
	private String email ;
	private String senha ;
	private String telefone ;
	private String celular ;
	private String rg ;
	private String cpf ;
	@ManyToOne
	private Endereco endereco ; //gas
@Entity
public class Estado {
	@Id
	@GeneratedValue
	private Integer id ;
	private String estado ; //gas
@Entity
public class Endereco {
	@Id
	@GeneratedValue
	private Long id ;
	private String cep ;
	private String endereco ;
	private String bairro ;
	private String complemento ;
	private String numero ;
	@OneToOne
	private Cidade cidade ; //gas
@Entity
public class Cidade {
	@Id
	@GeneratedValue
	private Integer id ;
	private String cidade ;
	@OneToMany
	private Estado estado ; //gas

Grato!

5 Respostas

visola

Isso tá com cara de conflito de versão do hibernate.
Uma busca rápida no Google pelo seu erro, retornou este post que no final o cara diz que ele seguiu o item 2 deste guia. Pelo que entendi é algum problema de namespace, mas não consigo ver onde isso se relaciona com o seu código.
Tenta dar uma conferida nas versões dos jars que você está usando. Veja se consegue baixar todas as últimas versões do site.

Jose_Donizetti

O relacionamento em Estado não pode ser do tipo @OneToMany, porque o lado estado é apenas um! Tenta utilizar o @OneToOne, ou @ManyToOne dependo do seu mapeamento.

@OneToOne private Estado estado;

Paulo_Silveira

cho que voce realmente tem os dois problemas. Como ele esta reclamando de um construtor que nao existe, provavelmente no path do seu projeto (dentro do WEB-INF/lib ou dentro da variavel de mabiente classpath) voce tem um hibernate por la. Remova-o, ja que o jboss ja vem com o Hibernate.

Depois veja se continua dando erro. Tambem acho estranho o mapeamento many to one de um lado e one to one do outro.

euprogramador

O mapeamento para estado na cidade realmente está estranho também, OneToMany quer dizer que você tem uma cidade com muitos estados o que é irreal, o correto era usar o @ManyToOne várias cidades possuem um estado ou @OneToOne onde uma Cidade tem um estado.

desk

Olá galera, brigadão a todos.
Eu tava querendo por @ManyToOne mesmo, mas passei batido e não reparei. hehe

Consegui arrumar, troquei a anotação, removi os jars e repuz, limpei os projetos e funciono.

[]s

Criado 31 de janeiro de 2011
Ultima resposta 1 de fev. de 2011
Respostas 5
Participantes 5