hibernate 在有主外键关系的表中插入数据

CREATETABLEorder(idint(10)NOTNULLauto_increment,user_idint(12)NOTNULL,statusint(10)NO... CREATE TABLE order (
id int(10) NOT NULL auto_increment,
user_id int(12) NOT NULL,
status int(10) NOT NULL,
order_time bigint(20) NOT NULL,
order_desc varchar(100) default NULL,
total_price double NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE item (
id int(12) NOT NULL auto_increment,
order_id int(10) NOT NULL,
product_id int(12) NOT NULL,
dang_price double NOT NULL,
product_num int(10) NOT NULL default '1',
amount double NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

item表中的order_id是外键,关联order表中的主键id

现在我想插入order表和item表,插item表的时候order_id怎么得来

hibernate中怎么写
展开
 我来答
dong_ya
2012-02-17 · TA获得超过140个赞
知道答主
回答量:34
采纳率:0%
帮助的人:39.7万
展开全部
你的意思是你想保存item的时候,其关联的order并不存在(数据库中没有),这样的话,也没关系,你可以先调用order 的sava操作,这时order就是一个持久化对象,你就可以获取order的id,之后保存item就行了。
herrywood
推荐于2018-04-16 · TA获得超过869个赞
知道小有建树答主
回答量:523
采纳率:66%
帮助的人:484万
展开全部
定义如下:
@Entity
class Order {
...
@OneToMany(mappedBy='order')
List items = new List<Item>();
}
@Entity
class Item {
...
@ManyToOne
Order order;
...
}
保存代码如下:
...
entityManager.save(order); // 保存成功就有Order的id了
...
item.setOrder(order);
...
entityManager.save(item); // 保存Item
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zkwjforever
2012-02-17 · 超过20用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:33.4万
展开全部
1.在实体类的映射文件中(order类)设置cascade属性为all
2.如果使用注解方式,在order实体类中getItems的@OneToMany中设置cascade属性为all
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式