Hibernate: Criteria + FK[RESOLVIDO]

E ai moçada…
Meu problema é simples, preciso recuperar uma lista de objeto que tenha um FK = ?
Entretanto preciso usar Criteria…

Estou fazendo assim:

Criteria criteria = session.createCriteria(CD.class); Genre genre = getGenre(Integer.parseInt(form.getCbGenres())); criteria = criteria.add(Restrictions.eq(IUtil.TABLE_CD_GENRE,genre)); list = criteria.list();

minhas classes (Tirei tds os Sets e construtores para ficar menor):

@Entity
public class CD implements Serializable{

	private static final long serialVersionUID = -1737170960980903311L;

	private Integer id;
	private String title;
	private String artiste;
	private Integer launchYear;
	private Genre genre;
	private Double price;
	
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public Integer getId() {
		return id;
	}
	@Column(name = IUtil.TABLE_CD_TITLE)
	public String getTitle() {
		return title;
	}

	@Column(name = IUtil.TABLE_CD_ARTISTE)
	public String getArtiste() {
		return artiste;
	}	

	@Column(name = IUtil.TABLE_CD_YEAR)
	public Integer getLaunchYear() {
		return launchYear;
	}	

	@ManyToOne	
	@JoinColumn(name = IUtil.TABLE_CD_GENRE)
	public Genre getGenre() {
		return genre;
	}
	
	@Column(name = IUtil.TABLE_CD_PRICE)
	public Double getPrice() {
		return price;
	}	
}


@Entity
public class Genre implements Serializable {

	private static final long serialVersionUID = -8270755449685855786L;

	private Integer id;
	private String description;	

	@Id	
	@GeneratedValue(strategy = GenerationType.AUTO)
	public Integer getId() {
		return id;
	}	

   @Column(name = "description")
	public String getDescription() {
		return description;
	}
}

Esqueci…
Fazendo dessa maneira eu tenho o seguinte erro…

ERRO:org.hibernate.QueryException: could not resolve property: Genre of: storedisc.vo.CD 05/11/2009 08:52:33 org.apache.struts.chain.commands.AbstractExceptionHandler execute WARNING: Unhandled exception org.hibernate.TransactionException: Transaction not successfully started at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:131) at storedisc.dao.DaoFactory.endHibernate(DaoFactory.java:33) at storedisc.dao.DaoQuery.query(DaoQuery.java:42)

Tenta:

@Entity @Table("NOME_DA_TABELA") public class CD implements Serializable{...

Encontrei o problema…
Ao invés de fazer isso

Criteria criteria = session.createCriteria(CD.class); Genre genre = getGenre(Integer.parseInt(form.getCbGenres())); criteria = criteria.add(Restrictions.eq(IUtil.TABLE_CD_GENRE,genre)); list = criteria.list();

fazer isso

Criteria criteria = session.createCriteria(CD.class); Genre genre = getGenre(Integer.parseInt(form.getCbGenres())); criteria = criteria.add(Restrictions.eq("genre",genre)); list = criteria.list();

O hibernate transforma um BD relacional em orientado a objeto, conceito basico do hibernate que não lembrei na hr de implentar…

Sei que não está dentro do assunto mas para que essas “anotações”???
Para que servem efetivamente?

 @ManyToOne    //????????????????
     @JoinColumn(name = IUtil.TABLE_CD_GENRE)  //?????????????
     public Genre getGenre() {  
         return genre;  
     }  
       
     @Column(name = IUtil.TABLE_CD_PRICE)  
     public Double getPrice() {  
         return price;  
     }     

Desculpem a ignorância!

primeiro de tudo, os ignorantes são aqueles que preferem em ficar com a duvida além de tira-la…
Para efeito de explicação vou inverter as ordens delas…

[code]@JoinColumn(name = IUtil.TABLE_CD_GENRE) //essa notação informa ao Hibernate que essa column é uma FK, para isso devo mapear a entidade que relacionamento com essa

@ManyToOne // essa informa o tipo de relacionamento que essa entidade /tem com a entidade que esta sendo mapeada[/code]

Espero ter ajudado…