/***************************************************************************************************************************************************/
/******************* 情况 1,2,3 之情况1(单向) ------- 【让Product做主表去参照Dividend】
/***************************************************************************************************************************************************/
即:由
//我们发现是product参照dividend表。所以这里product是主表。set的时候要用 product.setDividend(dividend);
@Entity
@Table(name="wxsc_product")
public class Product extends EntitySupport{
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name="dividend_id",referencedColumnName="id")
private Dividend dividend;//赠品
@Entity
@Table(name="wxsc_dividend")
public class Dividend extends EntitySupport {
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="dividend")
private Product product;
以及:
Dividend dividend = new Dividend();
dividend.setAttribute("玩具类");
//dividend.setDividendId("DJFOIWEFILDJFOWFEjo-DJFWOE");
dividend.setDividendName("赠品:自行车");
dividend.setDividendNumber("484545488");
dividend.setQuantity(2);
dividend.setCreateTime(date);
dividend.setUpdateTime(date);
//下面让这两个商品p1,p2都赠送这一个赠品,另外一个商品p3则没有赠品
Product p1 = new Product();
p1.setArticleNumber("03558866-24-22");
p1.setProductAttribute("湖南纸业出品");
p1.setProductName("卫生纸");
p1.setUnitPrice(14.32d);
p1.setCreateTime(date);
p1.setUpdateTime(date);
p1.setDividend(dividend);
Product p2 = new Product();
p2.setArticleNumber("0694412548522");
p2.setProductAttribute("广东阳江");
p2.setProductName("水果刀");
p2.setUnitPrice(6.5d);
p2.setCreateTime(date);
p2.setUpdateTime(date);
p2.setDividend(dividend);
Product p3 = new Product();
p3.setArticleNumber("8754515484522");
p3.setProductAttribute("广州经济开发区");
p3.setProductName("茉莉蜜茶");
p3.setUnitPrice(3.0d);
p3.setCreateTime(date);
p3.setUpdateTime(date);
p3.setDividend(null);
this.merge(p1);
this.merge(p2);
this.merge(p3);
生成的表关系是:
mysql> show create table wxsc_product;
+--------------+---------------------------------------------------------------------------------
| Table | Create Table |
+--------------+---------------------------------------------------------------------------------
| wxsc_product | CREATE TABLE `wxsc_product` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`createTime` datetime NOT NULL,
`updateTime` datetime NOT NULL,
`version` int(11) NOT NULL,
`article_number` varchar(255) DEFAULT NULL,
`order_quantity` int(11) DEFAULT NULL,
`product_attribute` varchar(255) DEFAULT NULL,
`product_name` varchar(255) DEFAULT NULL,
`unit_price` double DEFAULT NULL,
`dividend_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FKEC59DBA19367CD45` (`dividend_id`),
CONSTRAINT `FKEC59DBA19367CD45` FOREIGN KEY (`dividend_id`) REFERENCES `wxsc_dividend` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=gbk |
+--------------+----------------------------------------------------------------------------------
1 row in set (0.00 sec)
mysql> show create table wxsc_dividend;
+---------------+---------------------------------------------------------------------------------
| Table | Create Table |
+---------------+---------------------------------------------------------------------------------
| wxsc_dividend | CREATE TABLE `wxsc_dividend` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`createTime` datetime NOT NULL,
`updateTime` datetime NOT NULL,
`version` int(11) NOT NULL,
`attribute` varchar(255) DEFAULT NULL,
`dividend_name` varchar(255) DEFAULT NULL,
`dividend_number` varchar(255) DEFAULT NULL,
`quantity` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gbk |
+---------------+---------------------------------------------------------------------------------
1 row in set (0.00 sec)
会得到下面的结果。
mysql> select * from wxsc_dividend;
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
| id | createTime | updateTime | version | attribute | dividend_name | dividend_number | quantity |
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
| 1 | 2014-04-05 16:45:31 | 2014-04-05 16:45:31 | 0 | 玩具类 | 赠品:自行车 | 484545488 | 2 |
| 2 | 2014-04-05 16:45:31 | 2014-04-05 16:45:31 | 0 | 玩具类 | 赠品:自行车 | 484545488 | 2 |
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
2 rows in set (0.00 sec)
mysql> select * from wxsc_product;
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
| id | createTime | updateTime | version | article_number | order_quantity | product_attribute | product_name | unit_price | dividend_id |
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
| 1 | 2014-04-05 16:45:31 | 2014-04-05 16:45:31 | 0 | 03558866-24-22 | 0 | 湖南纸业出品 | 卫生纸 | 14.32 | 1 |
| 2 | 2014-04-05 16:45:31 | 2014-04-05 16:45:31 | 0 | 0694412548522 | 0 | 广东阳江 | 水果刀 | 6.5 | 2 |
| 3 | 2014-04-05 16:45:31 | 2014-04-05 16:45:31 | 0 | 8754515484522 | 0 | 广州经济开发区 | 茉莉蜜茶 | 3 | NULL |
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
3 rows in set (0.00 sec)
/***************************************************************************************************************************************************/
/******************* 情况 1,2,3 之情况2(单向) ------- 【让Dividend做主表去参照Product】
/***************************************************************************************************************************************************/
修改为:(发现不能按下面这样子做,不然Product表的外键约束全是NULL)
//我们发现是 dividend 参照 product 表。所以这里 dividend 是主表。set的时候要用 dividend.setDividend(product);
@Entity
@Table(name="wxsc_product")
public class Product extends EntitySupport{
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="product")
private Dividend dividend;//赠品
@Entity
@Table(name="wxsc_dividend")
public class Dividend extends EntitySupport {
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name="product_id",referencedColumnName="id")//我让Dividend做主表去参照Product
private Product product;
以及:
Dividend dividend = new Dividend();
dividend.setAttribute("玩具类");
//dividend.setDividendId("DJFOIWEFILDJFOWFEjo-DJFWOE");
dividend.setDividendName("赠品:自行车");
dividend.setDividendNumber("484545488");
dividend.setQuantity(2);
dividend.setCreateTime(date);
dividend.setUpdateTime(date);
//下面让这两个商品p1,p2都赠送这一个赠品,另外一个商品p3则没有赠品
Product p1 = new Product();
p1.setArticleNumber("03558866-24-22");
p1.setProductAttribute("湖南纸业出品");
p1.setProductName("卫生纸");
p1.setUnitPrice(14.32d);
p1.setCreateTime(date);
p1.setUpdateTime(date);
p1.setDividend(dividend);
Product p2 = new Product();
p2.setArticleNumber("0694412548522");
p2.setProductAttribute("广东阳江");
p2.setProductName("水果刀");
p2.setUnitPrice(6.5d);
p2.setCreateTime(date);
p2.setUpdateTime(date);
p2.setDividend(dividend);
Product p3 = new Product();
p3.setArticleNumber("8754515484522");
p3.setProductAttribute("广州经济开发区");
p3.setProductName("茉莉蜜茶");
p3.setUnitPrice(3.0d);
p3.setCreateTime(date);
p3.setUpdateTime(date);
p3.setDividend(null);
this.merge(p1);
this.merge(p2);
this.merge(p3);
生成的关系如下:
mysql> show create table wxsc_product;
+--------------+-------------------------------------------------------------------------------------------------------------------
| Table | Create Table
+--------------+-------------------------------------------------------------------------------------------------------------------
| wxsc_product | CREATE TABLE `wxsc_product` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`createTime` datetime NOT NULL,
`updateTime` datetime NOT NULL,
`version` int(11) NOT NULL,
`article_number` varchar(255) DEFAULT NULL,
`order_quantity` int(11) DEFAULT NULL,
`product_attribute` varchar(255) DEFAULT NULL,
`product_name` varchar(255) DEFAULT NULL,
`unit_price` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+--------------+-------------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
mysql> show create table wxsc_dividend;
+---------------+------------------------------------------------------------------------------------------------------------------
| Table | Create Table
+---------------+------------------------------------------------------------------------------------------------------------------
| wxsc_dividend | CREATE TABLE `wxsc_dividend` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`createTime` datetime NOT NULL,
`updateTime` datetime NOT NULL,
`version` int(11) NOT NULL,
`attribute` varchar(255) DEFAULT NULL,
`dividend_name` varchar(255) DEFAULT NULL,
`dividend_number` varchar(255) DEFAULT NULL,
`quantity` int(11) NOT NULL,
`product_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FKF06C177DE93A980F` (`product_id`),
CONSTRAINT `FKF06C177DE93A980F` FOREIGN KEY (`product_id`) REFERENCES `wxsc_product` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+---------------+------------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
mysql>
插入数据试试看。结果如下:
mysql> select * from wxsc_product;
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+
| id | createTime | updateTime | version | article_number | order_quantity | product_attribute | product_name | unit_price |
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+
| 1 | 2014-04-05 16:58:53 | 2014-04-05 16:58:53 | 0 | 03558866-24-22 | 0 | 湖南纸业出品 | 卫生纸 | 14.32 |
| 2 | 2014-04-05 16:58:53 | 2014-04-05 16:58:53 | 0 | 0694412548522 | 0 | 广东阳江 | 水果刀 | 6.5 |
| 3 | 2014-04-05 16:58:53 | 2014-04-05 16:58:53 | 0 | 8754515484522 | 0 | 广州经济开发区 | 茉莉蜜茶 | 3 |
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+
3 rows in set (0.00 sec)
mysql> select * from wxsc_dividend;
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+------------+
| id | createTime | updateTime | version | attribute | dividend_name | dividend_number | quantity | product_id |
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+------------+
| 1 | 2014-04-05 16:58:53 | 2014-04-05 16:58:53 | 0 | 玩具类 | 赠品:自行车 | 484545488 | 2 | NULL |
| 2 | 2014-04-05 16:58:53 | 2014-04-05 16:58:53 | 0 | 玩具类 | 赠品:自行车 | 484545488 | 2 | NULL |
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+------------+
2 rows in set (0.00 sec)
mysql>
结果还是一样的。
eclipse生成如下的 Hibernate SQL 语句:
正在构造一些假数据.
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Product
*/ insert
into
wxsc_product
(createTime, updateTime, version, article_number, order_quantity, product_attribute, product_name, unit_price)
values
(?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Dividend
*/ insert
into
wxsc_dividend
(createTime, updateTime, version, attribute, dividend_name, dividend_number, product_id, quantity)
values
(?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Product
*/ insert
into
wxsc_product
(createTime, updateTime, version, article_number, order_quantity, product_attribute, product_name, unit_price)
values
(?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Dividend
*/ insert
into
wxsc_dividend
(createTime, updateTime, version, attribute, dividend_name, dividend_number, product_id, quantity)
values
(?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Product
*/ insert
into
wxsc_product
(createTime, updateTime, version, article_number, order_quantity, product_attribute, product_name, unit_price)
values
(?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
可见外键没参照到product表。这是因为写java代码的时候不可以继续使用上面那段了
//p1.setDividend(dividend); 特别说明:这种写法只适用于 product参照dividend表的情况下使用。如果参照关系反过来了。就要使用 dividend.setDividend(p1);
还有特别注意一个规律:
只要是mappBy=“product”
如果改成下面的Java语句试试看。参照关系仍然是 product 参照 dividend
/***************************************************************************************************************************************************/
/******************* 情况 1,2,3 之情况3(双向) ------- 回到最初【让 Product 做主表去参照 Dividend】
/***************************************************************************************************************************************************/
set对象关系的时候一定要记住两个事情:
1.谁做主表?
2.单向还是双向映射?如果是双向就要两个对象都要互相set对方。这样级联更新的时候结果才是正确的。
@Entity
@Table(name="wxsc_product")
public class Product extends EntitySupport{
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name="dividend_id",referencedColumnName="id")//我让 Product 做主表去参照 Dividend
private Dividend dividend;//赠品
@Entity
@Table(name="wxsc_dividend")
public class Dividend extends EntitySupport {
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="dividend")
private Product product;
以及:
Dividend dividend = new Dividend();
dividend.setAttribute("玩具类");
//dividend.setDividendId("DJFOIWEFILDJFOWFEjo-DJFWOE");
dividend.setDividendName("赠品:自行车");
dividend.setDividendNumber("484545488");
dividend.setQuantity(2);
dividend.setCreateTime(date);
dividend.setUpdateTime(date);
//下面让这两个商品p1,p2都赠送这一个赠品,另外一个商品p3则没有赠品
Product p1 = new Product();
p1.setArticleNumber("03558866-24-22");
p1.setProductAttribute("湖南纸业出品");
p1.setProductName("卫生纸");
p1.setUnitPrice(14.32d);
p1.setCreateTime(date);
p1.setUpdateTime(date);
p1.setDividend(dividend);
Product p2 = new Product();
p2.setArticleNumber("0694412548522");
p2.setProductAttribute("广东阳江");
p2.setProductName("水果刀");
p2.setUnitPrice(6.5d);
p2.setCreateTime(date);
p2.setUpdateTime(date);
p2.setDividend(dividend);
Product p3 = new Product();
p3.setArticleNumber("8754515484522");
p3.setProductAttribute("广州经济开发区");
p3.setProductName("茉莉蜜茶");
p3.setUnitPrice(3.0d);
p3.setCreateTime(date);
p3.setUpdateTime(date);
p3.setDividend(null);
//与上面的区别就是多加了下面这两句.
dividend.setProduct(p1);
dividend.setProduct(p2);
this.merge(p1);
this.merge(p2);
this.merge(p3);
生成的关系如下:
mysql> show create table wxsc_product;
+--------------+-----------------------------------------------------------------------------------------------------
| Table | Create Table
+--------------+-----------------------------------------------------------------------------------------------------
| wxsc_product | CREATE TABLE `wxsc_product` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`createTime` datetime NOT NULL,
`updateTime` datetime NOT NULL,
`version` int(11) NOT NULL,
`article_number` varchar(255) DEFAULT NULL,
`order_quantity` int(11) DEFAULT NULL,
`product_attribute` varchar(255) DEFAULT NULL,
`product_name` varchar(255) DEFAULT NULL,
`unit_price` double DEFAULT NULL,
`dividend_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FKEC59DBA19367CD45` (`dividend_id`),
CONSTRAINT `FKEC59DBA19367CD45` FOREIGN KEY (`dividend_id`) REFERENCES `wxsc_dividend` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk |
+--------------+-----------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
mysql> show create table wxsc_dividend;
+---------------+----------------------------------------------------------------------------------------------------
| Table | Create Table
+---------------+----------------------------------------------------------------------------------------------------
| wxsc_dividend | CREATE TABLE `wxsc_dividend` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`createTime` datetime NOT NULL,
`updateTime` datetime NOT NULL,
`version` int(11) NOT NULL,
`attribute` varchar(255) DEFAULT NULL,
`dividend_name` varchar(255) DEFAULT NULL,
`dividend_number` varchar(255) DEFAULT NULL,
`quantity` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gbk |
+---------------+----------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)
mysql>
插入的数据如下:
mysql> select * from wxsc_product;
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
| id | createTime | updateTime | version | article_number | order_quantity | product_attribute | product_name | unit_price | dividend_id |
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
| 1 | 2014-04-05 17:33:59 | 2014-04-05 17:33:59 | 0 | 0694412548522 | 0 | 广东阳江 | 水果刀 | 6.5 | 1 |
| 2 | 2014-04-05 17:33:59 | 2014-04-05 17:33:59 | 0 | 03558866-24-22 | 0 | 湖南纸业出品 | 卫生纸 | 14.32 | 1 |
| 3 | 2014-04-05 17:33:59 | 2014-04-05 17:33:59 | 0 | 0694412548522 | 0 | 广东阳江 | 水果刀 | 6.5 | 2 |
| 4 | 2014-04-05 17:33:59 | 2014-04-05 17:33:59 | 0 | 8754515484522 | 0 | 广州经济开发区 | 茉莉蜜茶 | 3 | NULL |
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
4 rows in set (0.00 sec)
mysql> select * from wxsc_dividend;
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
| id | createTime | updateTime | version | attribute | dividend_name | dividend_number | quantity |
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
| 1 | 2014-04-05 17:33:59 | 2014-04-05 17:33:59 | 0 | 玩具类 | 赠品:自行车 | 484545488 | 2 |
| 2 | 2014-04-05 17:33:59 | 2014-04-05 17:33:59 | 0 | 玩具类 | 赠品:自行车 | 484545488 | 2 |
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
2 rows in set (0.00 sec)
mysql>
太悲剧了。更加乱。
eclipse的输出如下:
正在构造一些假数据.
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Dividend
*/ insert
into
wxsc_dividend
(createTime, updateTime, version, attribute, dividend_name, dividend_number, quantity)
values
(?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Product
*/ insert
into
wxsc_product
(createTime, updateTime, version, article_number, dividend_id, order_quantity, product_attribute, product_name, unit_price)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Product
*/ insert
into
wxsc_product
(createTime, updateTime, version, article_number, dividend_id, order_quantity, product_attribute, product_name, unit_price)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Dividend
*/ insert
into
wxsc_dividend
(createTime, updateTime, version, attribute, dividend_name, dividend_number, quantity)
values
(?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Product
*/ insert
into
wxsc_product
(createTime, updateTime, version, article_number, dividend_id, order_quantity, product_attribute, product_name, unit_price)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Product
*/ insert
into
wxsc_product
(createTime, updateTime, version, article_number, dividend_id, order_quantity, product_attribute, product_name, unit_price)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
/***************************************************************************************************************************************************/
/******************* 情况 1,2,3 之情况4(双向) ------- 回到最初【让 Product 做主表去参照 Dividend】
/***************************************************************************************************************************************************/
我再次修改java语句为:
Date date = new Date();
Dividend dividend = new Dividend();
dividend.setAttribute("玩具类");
//dividend.setDividendId("DJFOIWEFILDJFOWFEjo-DJFWOE");
dividend.setDividendName("赠品:自行车");
dividend.setDividendNumber("484545488");
dividend.setQuantity(2);
dividend.setCreateTime(date);
dividend.setUpdateTime(date);
//下面让这两个商品p1,p2都赠送这一个赠品,另外一个商品p3则没有赠品
Product p1 = new Product();
p1.setArticleNumber("03558866-24-22");
p1.setProductAttribute("湖南纸业出品");
p1.setProductName("卫生纸");
p1.setUnitPrice(14.32d);
p1.setCreateTime(date);
p1.setUpdateTime(date);
p1.setDividend(dividend);
Product p2 = new Product();
p2.setArticleNumber("0694412548522");
p2.setProductAttribute("广东阳江");
p2.setProductName("水果刀");
p2.setUnitPrice(6.5d);
p2.setCreateTime(date);
p2.setUpdateTime(date);
p2.setDividend(dividend);
Product p3 = new Product();
p3.setArticleNumber("8754515484522");
p3.setProductAttribute("广州经济开发区");
p3.setProductName("茉莉蜜茶");
p3.setUnitPrice(3.0d);
p3.setCreateTime(date);
p3.setUpdateTime(date);
p3.setDividend(null);
dividend.setProduct(p1);
dividend.setProduct(p2);
this.merge(dividend);
得到如下数据:
mysql> select * from wxsc_product;
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
| id | createTime | updateTime | version | article_number | order_quantity | product_attribute | product_name | unit_price | dividend_id |
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
| 1 | 2014-04-05 17:41:58 | 2014-04-05 17:41:58 | 0 | 0694412548522 | 0 | 广东阳江 | 水果刀 | 6.5 | 1 |
+----+---------------------+---------------------+---------+----------------+----------------+-------------------+--------------+------------+-------------+
1 row in set (0.00 sec)
mysql> select * from wxsc_dividend;
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
| id | createTime | updateTime | version | attribute | dividend_name | dividend_number | quantity |
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
| 1 | 2014-04-05 17:41:58 | 2014-04-05 17:41:58 | 0 | 玩具类 | 赠品:自行车 | 484545488 | 2 |
+----+---------------------+---------------------+---------+-----------+---------------+-----------------+----------+
1 row in set (0.00 sec)
mysql>
可见这样做更加错。
后台eclipse的输出是:
正在构造一些假数据.
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Dividend
*/ insert
into
wxsc_dividend
(createTime, updateTime, version, attribute, dividend_name, dividend_number, quantity)
values
(?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Product
*/ insert
into
wxsc_product
(createTime, updateTime, version, article_number, dividend_id, order_quantity, product_attribute, product_name, unit_price)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate:
/* insert com.kington.wxsc.model.db.shop.Subscriber
*/ insert
into
wxsc_subscriber
(createTime, updateTime, version, city, country, headimgurl, language, local_headimg_url, nickname, open_id, parent_subscriber_id, payment_type, province, sex, subscribe_number, subscribe_time, telephone_number)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
/***************************************************************************************************************************************************/
/******************* 情况 4,5,6 之情况4 **********************/
/***************************************************************************************************************************************************/
这个情况可以忽略。
分享到:
相关推荐
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
第一部分 从Hibernate和EJB 3.0开始 第1章 理解对象/关系持久化 1.1 什么是持久化 1.1.1 关系数据库 1.1.2 理解SQL 1.1.3 在Java中使用SQL 1.1.4 面向对象应用程序中的持久化 1.2 范式不...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 23.4.1. ...
部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得...
22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 23.1. Employer(雇主)/Employee(雇员) 23.2. Author(作家)/Work(作品) 23.3. Customer(客户)/Order(订单)/Product(产品) 23.4. 杂例 ...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
2. 版权声明 1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class ...22.2. Hibernate 映射 22.3. Hibernate 代码 23. 示例:复杂映射实例 ……………………
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
在线考试SpringHibernate有关该计划的信息:该项目旨在同时为学生和老师提供一个在线门户,以便定期的课堂测试相应的结果发布过程变为在线考试材料供应:教师可以登录(如果没有帐户,则可以注册)并添加主题以发布...
--此处hibernate 的映射采用的是.xml 配置则应设置为:class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”--> <property name="dataSource" ref="dataSource" /> <prop key="...
5.2.1 创建并配置Hibernate映射文件 37 5.2.2 开发并配置Hibernate DAO层 38 5.3 控制层Struts实现 38 5.3.1 开发Struts核心流程代码 38 5.3.2 开发JSP页面原型 40 5.3.3 增加表单校验功能 40 5.3.4 调用DAO组件操作...
一切都是根据不断出现的需求来完成的,尽管我知道最终的结果将不是一个令人难以置信的项目,但我已经为自己的发展感到自豪。实施细节实施中使用的技术: JavaFX:用于使用Java图形界面开发应用程序的库; JPA:用于...
4.4 使用内联结果映射和显式结果映射 78 4.4.1 基本类型结果 79 4.4.2 JavaBean结果和Map结果 81 4.5 小结 81 第5章 执行非查询语句 82 5.1 更新数据的基本方法 82 5.1.1 用于非查询SQL语句的SqlMap API 82 5.1.2 ...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
27 6.1 测试目的 27 6.2 测试方案 27 6.3 用户登录模块的测试用例及结果 27 6.4 管理员管理模块的用例和结果 28 6.5 本章小结 29 结 论 31 致 谢 33 参考文献 35 摘 要 随着社会的不断进步,志愿服务也逐渐的被广大...
用户能自动快速获取单表的创建,查询,更新,删除,建表语句,整表全部数据插入语句,单表对应Pojo类和单表的Hibernate映射文件等常用文字,且可借此构造更复杂的Sql语句。 4. 能执行Sql语句并显示执行结果,如果是...