[RESOLVIDO] OneToMany Hibernate Duvida

4 respostas
denisagui

Olá a todos, tenho o seguinte problema.
Estou desenvolvendo uma aplicação web e gostaria de selecionar todos os álbuns que pertencem a um determinado artista. como pode ser visto na imagem abaixo,
tenho a chave estrangeira de artista como 'id_artista' dentro do álbum.

[img]https://photos-2.dropbox.com/psi/tbd/2prXfop8xWn8e2pCSC6PBXUc2vuSvonK-jpl2k5gucY/48633807/[telefone removido]/966855c/Sem%20t%C3%ADtulo.png?size=1600x1200[/img]

Então criei uma lista de álbuns dentro do artista para que os álbuns daquele artista pudessem ser carregados no artista.

POJO Artista
@Entity
@Table(name = "artista")
public class Artista implements Serializable {
	private static final long serialVersionUID = 9210163915685834246L;
	private Integer idArtista;
	private String nome;
       .
       .
       .	
	private List<Album> albuns;
	
	
	@OneToMany(mappedBy="artista") 
	@Cascade(org.hibernate.annotations.CascadeType.ALL) 
	public List<Album> getAlbuns() {
		return albuns;
	}
	public void setAlbuns(List<Album> albuns) {
		this.albuns = albuns;
	}
POJO Álbum
@Entity
@Table(name = "album")
public class Album implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Integer idAlbum;
	private Artista artista;
	private String nome;
	
	@Id
	@GeneratedValue
	@Column(name = "id_album")
	public Integer getIdAlbum() {
		return idAlbum;
	}
	public void setIdAlbum(Integer idAlbum) {
		this.idAlbum = idAlbum;
	}
		
	@ManyToOne
	@JoinColumn(name = "id_artista")
	public Artista getArtista() {
		return artista;
	}
	public void setArtista(Artista artista) {
		this.artista = artista;
	}

Gostaria de saber como criar o OneToMany ou outro método para realizar essa operação.
trazendo apenas os álbuns de determinado artista dentro da lista especificada nele.
Desde já agradeço a todos. :wink:

4 Respostas

Hebert_Coelho

Como está você não consegue? Tem alguma mensagem de erro?

denisagui

agora estou tentando com:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "artista") public List<Album> getAlbuns() { return albuns; } public void setAlbuns(List<Album> albuns) { this.albuns = albuns; }

e aparece a seguinte mensagem no log.
estou tentando usar Ajax para mostrar os álbuns de acordo com o artista selecionado.

18:21:40.437 [http-bio-8080-exec-1] DEBUG o.h.internal.util.EntityPrinter - Listing entities:

18:21:40.437 [http-bio-8080-exec-1] DEBUG o.h.internal.util.EntityPrinter - br.ucb.musicbay.album.Album{status=1, idAlbum=9, ano=1991, nome=asd, artista=br.ucb.musicbay.artista.Artista#8}

18:21:40.437 [http-bio-8080-exec-1] DEBUG o.h.internal.util.EntityPrinter - br.ucb.musicbay.album.Album{status=1, idAlbum=10, ano=1111, nome=asd, artista=br.ucb.musicbay.artista.Artista#8}

18:21:40.437 [http-bio-8080-exec-1] DEBUG o.h.internal.util.EntityPrinter - br.ucb.musicbay.artista.Artista{albuns=, status=1, generos=, nome=Nirvana, idArtista=8, descricao=Kurt Cobain}

ssionImpl.java:297)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)

 56 more
Hebert_Coelho

Vc consegue debugar e ver alguma mensagem de erro? Pq essa aí não disse nada. =/

denisagui

olá amigo, Desculpe o incomodo. não há nada de errado na solução, apenas a forma como eu queria apresentar.
muito obrigado.
vou fechar o tópico.

Criado 15 de maio de 2012
Ultima resposta 15 de mai. de 2012
Respostas 4
Participantes 2