【发布时间】:2013-11-26 18:28:04
【问题描述】:
我是 Hibernate 的新手。我有两个类“quotation”和“quotation_item” 他们的数据库结构是这样的
create table quotation
(
quotation_id int primary key auto_increment,
code varchar(20),
client_name varchar(20)
);
create table quotation_item
(
id int primary key auto_increment,
quotation_id int,
item_name varchar(20),
rate int,
qty int,
FOREIGN KEY (quotation_id) REFERENCES quotation(quotation_id)
);
Quotation.hbm.xml 是这样的,
<hibernate-mapping>
<class name="com.paramatrix.pojo.Quotation" table="quotation">
<id name="quotationId" type="int" column="quotation_id">
<generator class="native" />
</id>
<property name="code" column="code" type="string" />
<property name="clientName" column="client_name" type="string" />
<set name="quotationItem" table="quotation_item" fetch="select" cascade="all">
<key>
<column name="quotation_id" not-null="true" />
</key>
<one-to-many class="com.paramatrix.pojo.QuotationItem" />
</set>
</class>
</hibernate-mapping>
QuotationItem.hbm.xml是这样的,
<hibernate-mapping>
<class name="com.paramatrix.pojo.QuotationItem" table="quotation_item">
<id name="id" type="int" column="id">
<generator class="native" />
</id>
<many-to-one name="quotation" class="com.paramatrix.pojo.Quotation" cascade="save-update">
<column name="quotation_id" not-null="true" />
</many-to-one>
<property name="itemName" column="item_name" type="string" />
<property name="rate" column="rate" type="int" />
<property name="qty" column="qty" type="int" />
</class>
</hibernate-mapping>
POJO 是 1>引用.java
public class Quotation {
int quotationId;
String code;
String clientName;
Set<QuotationItem> quotationItem=new HashSet<QuotationItem>();
//getter& setter
}
2>QuotationItem.java
public class QuotationItem{
int id;
Quotation quotation;
String itemName;
int rate;
int qty;
//getter and setter
}
主要方法是
Set<QuotationItem> set=new HashSet<QuotationItem>();
SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session=factory.openSession();
session.beginTransaction();
Quotation quotation = new Quotation();
quotation.setCode(txtCode.getValue());
quotation.setClientName(txtClientName.getValue());
QuotationItem quotationItem = new QuotationItem();
quotationItem.setItemName(txtItemName.getValue());
quotationItem.setQty(Integer.parseInt( txtQty.getValue()));
quotationItem.setRate(Integer.parseInt(txtRate.getValue()));
set.add(quotationItem);
quotation.setQuotationItem(set);
session.saveOrUpdate((quotation));
session.getTransaction().commit();
System.out.println("Done");
【问题讨论】:
-
感谢您的代码。你有什么问题?