Consulta com Hibernate

Tenho tres tabelas: categorias, artistas e artistas_categorias

preciso fazer uma consulta para listar todos os artistas da categoria atual.
consegui fazer o mapeamento com hibernate annotation, n sei se esta correto mas n esta dando erro…so nao consegui fazer a classe que vai listar os artistas. preciso passar um parametro da categoria atual para poder listar os artistas daquela categoria. Alguem pode me ajudar?

CategoriasVO.java

@Entity  
@Table(name = "categorias")   
public class CategoriasVO {   
  
   @Id  
   @GeneratedValue(strategy = GenerationType.AUTO)   
   @Column(name = "codigo")   
   private int codigo;   
   @Column(name = "nome")   
   private String nome;   
   @Column(name = "url")   
   private String url;   
   @ManyToMany  
   @JoinTable(name = "artistas_categorias",    
      joinColumns = {    
         @JoinColumn(name = "cod_categoria")    
      },    
      inverseJoinColumns = {    
         @JoinColumn(name = "cod_artista")    
      }   
   )   
   private Set<ArtistasVO> artistas = new HashSet<ArtistasVO>();   
      
   public CategoriasVO(){   
         
   }   
      
   public Set<ArtistasVO> getArtistas() {   
      return artistas;   
   }   
  
   public void setArtistas(Set<ArtistasVO> artistas) {   
      this.artistas = artistas;   
   }   
  
   public String getUrl() {   
      return url;   
   }   
  
   public void setUrl(String url) {   
      this.url = url;   
   }   
  
   public void setCodigo(int codigo) {   
      this.codigo = codigo;   
   }   
  
   public int getCodigo() {   
      return this.codigo;   
   }   
  
   public String getNome() {   
      return nome;   
   }   
  
   public void setNome(String nome) {   
      this.nome = nome;   
   }   
  
}  

ArtistasVO.java

@Entity  
@Table(name = "artistas")   
public class ArtistasVO {   
  
   @Id  
   @GeneratedValue(strategy = GenerationType.AUTO)   
   @Column(name = "codigo")   
   private int codigo;   
   @Column(name = "nome")   
   private String nome;   
   @ManyToMany(mappedBy = "artistas",    
      fetch = FetchType.LAZY, cascade = CascadeType.ALL)   
   private Set<CategoriasVO> categorias = new HashSet<CategoriasVO>();   
  
   public ArtistasVO() {   
  
   }   
  
   public Set<CategoriasVO> getCategorias() {   
      return categorias;   
   }   
  
   public void setCategorias(Set<CategoriasVO> categorias) {   
      this.categorias = categorias;   
   }   
  
   public int getCodigo() {   
      return codigo;   
   }   
  
   public void setCodigo(int codigo) {   
      this.codigo = codigo;   
   }   
  
   public String getNome() {   
      return nome;   
   }   
  
   public void setNome(String nome) {   
      this.nome = nome;   
   }   
  
}

Alguma sugestao para fazer isso?

Se voce fez a dupla associação dos objetos na hora de salvar, voce pode fazer mais ou menos assim.

long chave_da_categoria = 2L;

CategoriaArtista a = (CategoriaArtista) session.load(CategoriaArtista.class, chave_da_categoria);

for(Artista at :a.getArtistas())
{
    System.out.println("Artista nome:" + at.getNome() );
}