我想將我的普通SQL語句轉換成適當的Hibernate ORM的。我已經閱讀了很多關於它的內容,但還沒有完全弄清楚。我希望你們中的一些可以幫助我:)SQL查詢到休眠ORM查詢
下面是一些我的課,我認爲有關這項任務的:
WarehouseProduct(我的實體類):
package exercise.java.basics.storage;
public class WarehouseProduct {
private int productID;
private String productName;
private int productCount;
public WarehouseProduct(final String productName, final int productCount) {
this.productName = productName;
this.productCount = productCount;
}
public WarehouseProduct() {
}
public int getProductID() {
return this.productID;
}
public void setProductID(final int productID) {
this.productID = productID;
}
public String getProductName() {
return this.productName;
}
public void setProductName(final String productName) {
this.productName = productName;
}
public int getProductCount() {
return this.productCount;
}
public void setProductCount(final int productCount) {
this.productCount = productCount;
}
}
吾道。
package exercise.java.basics.storage;
import javax.transaction.Transactional;
import exercise.java.basics.storage.ProductEnum.Product;
@Transactional
public interface WarehouseDAO {
public void initializeWarehouse();
public void storeProducts(final Product product, final int count);
public void removeProducts(final Product product, final int count);
public void updateStock();
}
storeProduct()從我的DAO實現方法:
public void storeProducts(final Product product, final int count) {
//Plain-SQL, works just fine
Session session = getSessionFactory().getCurrentSession();
SQLQuery storeProductQuery = session.createSQLQuery("UPDATE WAREHOUSE SET product_count = " + count //$NON-NLS-1$
+ " WHERE product_name = '" + product + "';"); //$NON-NLS-1$ //$NON-NLS-2$
storeProductQuery.executeUpdate();
//Hibernate attempt, doesn't work just yet
session.get("WarehouseProduct.class", "product_count"); //$NON-NLS-1$ //$NON-NLS-2$
Criteria createCriteria = session.createCriteria(WarehouseProduct.class); // Object.class = Entity
createCriteria.add(Property.forName("product_name").like(product));
createCriteria.list();
}
當測試我不同時使用(普通的SQL /休眠)嘗試一次的課程。
我認爲我已經有一半了,但仍然無法弄清楚完整的hibernate方法,這就是我希望你能幫助我的地方。
基本上我需要的是將storeProduct()方法中的純sql字符串轉換爲正確的hibernate命令。
將不勝感激任何幫助,你可以給我。
問候 daZza
編輯:這裏的映射:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="exercise.java.basics.storage.WarehouseProduct" table="WAREHOUSE">
<id name="productID" type="integer">
<column name="product_ID" not-null="true"/>
<generator class="identity" />
</id>
<property name="productName" type="string">
<column name="product_name" length="100"/>
</property>
<property name="productCount" type="integer">
<column name="product_count"/>
</property>
</class>
</hibernate-mapping>
至於這個問題,它是在不完整的代碼恕我直言。我很確定我的hibernate命令仍然缺少某些東西,或者只是錯誤的。
這是我想轉換爲hibernate的源SQL字符串:「UPDATE WAREHOUSE SET product_count =」+ count +「WHERE product_name ='」+ product +「';」
你能分享你的Hibernate實體映射,在XML可能,因爲我看到在你的實體類中沒有JPA/Hibernate註解。 還有你現在的錯誤/問題。 –
將我的映射文件添加到原始帖子。 – daZza