one to one的保存

房乔 发布于 2017/01/21 10:35
阅读 129
收藏 0

Book.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-5-7 13:39:56 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping package="com.wt.entity">


    <class name="Book" table="BOOKS">
    
        <id name="book_id" type="java.lang.Integer">
            <column name="BOOK_ID" />
            <generator class="native" />
        </id>
        
        <property name="book_name" type="java.lang.String">
            <column name="BOOK_NAME" />
        </property>
        
        <property name="quantity" type="java.lang.Integer">
            <column name="QUANTITY" />
        </property>
        
        <property name="price" type="double">
            <column name="PRICE" />
        </property>
        
        <property name="book_state" type="java.lang.Integer">
            <column name="BOOK_STATE" />
        </property>
        
        <one-to-one name="order" class="com.wt.entity.Order" cascade="save-update">
</one-to-one>
                
    </class>
    

</hibernate-mapping>

Order.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-5-7 13:39:56 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping package="com.wt.entity">


    <class name="Order" table="ORDERS">
    
        <id name="order_id" type="java.lang.Integer">
            <column name="ORDER_ID" />
            <!-- 使用外键的方式生成当前主键 -->
<generator class="foreign">
<!-- property 属性指定使用当前持久化类的哪一个属性的主键作为外键 -->
<param name="property">book</param>
</generator>
        </id>
        
        <property name="user_name" type="java.lang.String">
            <column name="USER_NAME" />
        </property>
        
        <!-- 采用 foreign 主键生成器策略的一端添加 one-to-one 元素映射关联属性 -->
<!-- 其 one-to-one 节点还应增加 constrained="true" 属性,以使当前的主键上添加外键约束 -->
<one-to-one name="book" class="com.wt.entity.Book" constrained="true" cascade="save-update"></one-to-one>
        
        
        <!-- 以前的处理 -->
        <!-- table: 指定中间表 -->
        <!-- 
        <set name="books" table="ORDERS_BOOKS">
            <key>
                <column name="O_ID" />
            </key>
         -->
            <!-- 使用 many-to-many 指定多对多的关联关系 -->
            <!-- column 执行 Set 集合中的持久化类在中间表的外建列的名称 -->
        <!-- 
<many-to-many class="Book" column="B_ID"></many-to-many>
        </set>
         -->
        
    </class>
</hibernate-mapping>


Dao方法:

// 以下为添加新的订单
public void saveOrUpdateOrder(Order order) {

getSession().save(order);

}




// 以下为用户购买图书,向图书购买表中添加数据
public void saveOrUpdateBook(Book book) {
getSession().save(book);
}

测试代码:

@Test
public void addOrder()
{
OrderDao adminTest = (OrderDao) context.getBean("orderDao");
//Book book = new Book();
Book book = new Book();
book.setBook_id(3);
book.setBook_name("Think in PHP");
book.setQuantity(4);
book.setPrice(34);
book.setBook_state(0);
Order order = new Order();
order.setBook(book);
order.setOrder_id(1);
order.setUser_name("lee");
adminTest.saveOrUpdateBook(book);
adminTest.saveOrUpdateOrder(order);

但我发现只能保存书而没有订单,如何做才能保存订单呢?
怎么设置?
}

加载中
返回顶部
顶部