2011-05-27 81 views
0
@Entity 
public class Store {} 


@Entity 
@Table(name = "storeitem") 
public class StoreItem { 

    @Id @Column 
    private Integer storeId; 

    @Id 
    @ManyToOne @JoinColumn (name="productId", referencedColumnName="id") 
    private Product product; 

    @Column private Double cost; 
} 

mysql> desc storeitem; 
+-------------+---------------------+------+-----+---------+-------+ 
| Field  | Type    | Null | Key | Default | Extra | 
+-------------+---------------------+------+-----+---------+-------+ 
| StoreId  | int(10) unsigned | NO | PRI | 0  |  | 
| ProductId | bigint(20) unsigned | NO | PRI | 0  |  | 
| cost  | double unsigned  | NO |  | 0  |  | 



@Entity 
@Table(name = "product") 
public class Product { 
    @Id @GeneratedValue @Column(name = "Id") 
    private Long id; 

    @Column(name = "Name") 
    private String name; 
} 

mysql> desc product; 
+-------------+---------------------+------+-----+---------+----------------+ 
| Field  | Type    | Null | Key | Default | Extra   | 
+-------------+---------------------+------+-----+---------+----------------+ 
| Id   | bigint(20) unsigned | NO | PRI | NULL | auto_increment | 
| Name  | varchar(70)   | NO |  |   |    | 




Criteria cr=sess.createCriteria(StoreItem.class); 
cr.add(Restrictions.eq("product.name","butter")); 
cr.list(); 

當我試圖通過孩子的屬性過濾我得到這個下面例外休眠單向多對一查詢由孩子的財產

org.hibernate.QueryException: could not resolve property: product.name of:StoreItem 

回答

0

HQL解決萬阿英,蔣達清

String hql="from StoreItem where productId in (select pd.id from Product pd where name = 'butter')"; 
Query query=sess.createQuery(hql); 
query.list(); 
0
Try{ 

    Criteria cr=sess.createCriteria(StoreItem.class, "si"); 
    crit.createCriteria("product","product").add(Restrictions.eq("name","butter")); 
    cr.list(); 

} 
+0

我嘗試「CR .add(Restrictions.eq(「product」,「product」)).add(Restrictions.eq(「name」,「butter」));'我得到了這個錯誤'org.hibernate.QueryException:無法解析屬性:名稱:StoreItem' – yodhevauhe 2011-05-27 11:39:48

+0

抱歉代碼錯誤請參閱編輯代碼。如果失敗嘗試'產品,Product.class'我不知道基於更多的註釋這就是爲什麼。 – 2011-05-27 11:45:40