ManyToMany

2 respostas
C

Gente,

Estou mapeando duas classes: banda e fã. A banda pode ter vários fãs e o fã pode seguir várias bandas.

A seguir as classes:


---

@Entity
@Table(name = "tb_fa")
@NamedQueries({
		@NamedQuery(name = "Fa.findByLogin",
				query = "SELECT u FROM Fa u WHERE lower(u.login) = :login order by u.id"),
		@NamedQuery(name = "Fa.findAll",
				query = "SELECT u FROM Fa u order by u.id desc") })
public class Fa extends Pessoa{
	
	@Id
	@Column(name="fa_id")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;
	
	
	@ManyToMany
	@JoinTable(name="tb_fa_tb_banda",
			joinColumns={@JoinColumn(name="fa_id")},
			inverseJoinColumns={@JoinColumn(name="banda_id")}
			)
	private List<Banda> bandas;
	

	private boolean isAdmin;
	
	
	public Fa(){
		bandas = new ArrayList<Banda>();
		
	}


	//gets e sets
}
Banda -------
@Entity
@Table(name = "tb_banda")
@NamedQueries({
		@NamedQuery(name = "Banda.findByLogin",
				query = "SELECT u FROM Banda u WHERE lower(u.login) = :login order by u.id"),
		@NamedQuery(name = "Banda.findAll",
				query = "SELECT u FROM Banda u order by u.id desc") })
				
public class Banda extends Pessoa{

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;
	
	
	private double mediaNota;
	private String estiloMusical;
	private String biografia;
	
	private List<Fa> fas;
	
	private String email;
	
	
	private boolean isAdmin;
        
        //gets e sets
        
 }

Mas está dando um erro:

[color=red]A Foreign key refering fa.Fa from banda.Banda has the wrong number of column. should be 2[/color]
2011-07-14 23:24:35,225 DEBUG hibernate.cfg.CollectionSecondPass -> Mapped collection key: id, element: pecas_id
2011-07-14 23:24:35,225 DEBUG hibernate.cfg.CollectionSecondPass -> Second pass for collection: fa.Fa.bandas
2011-07-14 23:24:35,225 DEBUG cfg.annotations.CollectionBinder -> Binding as ManyToMany: fa.Fa.bandas

O que eu estou fazendo errado?

2 Respostas

drsmachado

Formata teu código usando a tag [code]

fabiozoroastro

carol_ch,

Cadê as anotações de mapeamento de:

private List<Fa> fas;

Banda é mesmo filha de Pessoa?

public class Banda extends Pessoa ...

Até mais.

Criado 14 de julho de 2011
Ultima resposta 15 de jul. de 2011
Respostas 2
Participantes 3