ManyToMany

0 respostas
donny

Pessoal, preciso de uma ajuda de vocês. Estou tentando fazer um relacionamento tipo ManyToMany no hibernate entre duas classes: Acomodacao e Caracteristica. Abaixo o código das duas classes:

import java.util.HashSet;
import java.util.Set;

import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.ManyToOne;


import br.com.reservason.models.enumeration.StatusAcomodacao;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

@Entity
public class Acomodacao extends BaseEntity {

	private static final long serialVersionUID = 3701570113325116269L;
	private String numero;
	private String observacao;
	
	@Enumerated(EnumType.STRING)
	private StatusAcomodacao status = StatusAcomodacao.LIVRE;
	
	private Integer nroDeQuartos;
	private Integer capacidadeOcupacao;
	private Integer capacidadeMaxima;
	private Set<Caracteristica> caracteristicas = new HashSet<Caracteristica>(0);

	@ManyToOne
	private TipoAcomodacao tipoAcomodacao;
	

	public String getNumero() {
		return numero;
	}

	public String getObservacao() {
		return observacao;
	}

	public StatusAcomodacao getStatus() {
		return status;
	}

	public Integer getNroDeQuartos() {
		return nroDeQuartos;
	}

	public Integer getCapacidadeOcupacao() {
		return capacidadeOcupacao;
	}

	public Integer getCapacidadeMaxima() {
		return capacidadeMaxima;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	public void setStatus(StatusAcomodacao status) {
		this.status = status;
	}

	public void setNroDeQuartos(Integer nroDeQuartos) {
		this.nroDeQuartos = nroDeQuartos;
	}

	public void setCapacidadeOcupacao(Integer capacidadeOcupacao) {
		this.capacidadeOcupacao = capacidadeOcupacao;
	}

	public void setCapacidadeMaxima(Integer capacidadeMaxima) {
		this.capacidadeMaxima = capacidadeMaxima;
	}
	
	public TipoAcomodacao getTipoAcomodacao() {
		return tipoAcomodacao;
	}
	
	public void setTipoAcomodacao(TipoAcomodacao tipoAcomodacao) {
		this.tipoAcomodacao = tipoAcomodacao;
	}

	public void setCaracteristicas(Set<Caracteristica> caracteristicas) {
		this.caracteristicas = caracteristicas;
	}

	@ManyToMany(cascade = CascadeType.ALL)
	@JoinTable(name = "ACOMODACAO_CARACTERISTICA", joinColumns = { @JoinColumn(name = "ID") }, 
			inverseJoinColumns = { @JoinColumn(name = "ID") })
	public Set<Caracteristica> getCaracteristicas() {
		return caracteristicas;
	}
}
import javax.persistence.Entity;

import org.hibernate.validator.constraints.NotEmpty;

@Entity
public class Caracteristica extends BaseEntity {

	private static final long serialVersionUID = 6760096265612712150L;
	@NotEmpty
	private String tipo;
	private String observacoes;

	public String getTipo() {
		return tipo;
	}

	public String getObservacoes() {
		return observacoes;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}
}
@MappedSuperclass
public abstract class BaseEntity implements Serializable{
	
	private static final long serialVersionUID = -1975247538988769496L;

	@Id @GeneratedValue
	private Long id;

...

Ao rodar o projeto está gerando o seguinte errro:

GRAVE: Exception starting filter vraptor
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactoryCreator': Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: acomodacao, for columns: [org.hibernate.mapping.Column(caracteristicas)]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1413)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
	at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:106)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:87)
	at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
	at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4461)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5133)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5128)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: acomodacao, for columns: [org.hibernate.mapping.Column(caracteristicas)]
	at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:306)
	at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:290)
	at org.hibernate.mapping.Property.isValid(Property.java:217)
	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464)
	at org.hibernate.mapping.RootClass.validate(RootClass.java:235)
	at org.hibernate.cfg.Configuration.validate(Configuration.java:1362)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1865)
	at br.com.reservason.infra.persistence.SessionFactoryCreator.create(SessionFactoryCreator.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:340)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:293)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)
	... 27 more
01/09/2011 22:09:04 org.apache.catalina.core.StandardContext startInternal
GRAVE: Error filterStart
Criado 1 de setembro de 2011
Respostas 0
Participantes 1