我是一名hibernate初學者,在嘗試連接2個休眠表時出現問題。我想要做的是獲得某個商店取決於商店ID的產品列表,但是我得到的是每個商店下列出的數據庫中所有可用產品的列表。加入休眠狀態的外鍵
下面是Product.java
代碼:
@Entity
@Table (name = "products")
public class Product implements Serializable{
/**
*
*/
private static final long serialVersionUID = -1001086120280322279L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column (name = "product_id")
private int product_id;
@Column(name = "product_name", unique=true)
private String product_name;
@JoinColumn(name = "store", referencedColumnName="store_id")
@ManyToOne(cascade=CascadeType.ALL)
private Store store;
等。
,這裏是爲Store.java
代碼:
@Entity
@Table(name = "stores")
public class Store implements Serializable{
/**
*
*/
private static final long serialVersionUID = 4497252090404342019L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column (name = "store_id")
private int store_id;
@Column(name = "store_name", unique=true)
private String store_name;
@JoinColumn(name="store", referencedColumnName= "store_id")
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private List<Product> productList;
等。
下面是輸出:(產品A應在Butik A下,產品B在Butik下B)
Butik: Butik A
Produkt: Banana A
Produkt: Morot A
Produkt: Banana B
Produkt: Apple B
Butik: Butik B
Produkt: Banana A
Produkt: Morot A
Produkt: Banana B
Produkt: Spple B
我有2個附加的類,和的ProductDao該StoreDAO取查詢的護理,該代碼是在除了表名/類名這兩個類相似。
public class ProductDAO {
public static List<Product> getStoreProductsList() {
Session hibernateSession = HibernateUtil.getSession();
hibernateSession.beginTransaction();
Query query = hibernateSession.createQuery("from Product");
hibernateSession.getTransaction().commit();
List<Product> storeProducts = query.list();
return storeProducts;
}
}
有沒有什麼辦法可以用hibernate解決這個問題?
感謝
你如何檢索產品列表?你用什麼?加載?得到? Hibernate標準? HQL? SQL? – pakore 2010-10-06 09:21:01
我有兩個額外的類,ProductDAO和StoreDAO負責查詢,代碼在兩個類中都是類似的,除了表名。公共類ProductDao這個{ \t公共靜態列表 getStoreProductsList(){ \t \t \t 會話\t = hibernateSession HibernateUtil.getSession(); \t \t hibernateSession.beginTransaction(); \t \t \t \t Query query = hibernateSession.createQuery(「from se.kyh.stores.entities.Product」); \t \t \t \t hibernateSession.getTransaction()。commit(); \t \t \t \t List storeProducts = query.list(); \t \t return storeProducts; \t \t } –
pitic
2010-10-06 09:26:08
您應該將此評論添加到原始問題中。試着編輯問題。 – 2010-10-06 09:41:06