hibernate one-to-many many-to-one多了一个关联表

开始我是这么设计的

Manage类

@OneToMany
public Set<Operation> getOperactions() {
	return operactions;
}
Operation类

@ManyToOne
	public Manage getManage() {
		return manage;
	}
	public void setManage(Manage manage) {
		this.manage = manage;
	}

然后出了2个表之外又多出了一个operation_manage表,关联着2个表。。

之后我查了 javax.persistent.OneToMany注解发现有个例子

    Example 1: One-to-Many association using generics

    In Customer class:

    @OneToMany(cascade=ALL, mappedBy="customer")
    public Set getOrders() { return orders; }

    In Order class:

    @ManyToOne
    @JoinColumn(name="CUST_ID", nullable=false)
    public Customer getCustomer() { return customer; }


我就按着这个改成

@OneToMany(mappedBy="manage")
public Set<Operation> getOperactions() {
	return operactions;
}


 

@ManyToOne
	@JoinColumn(name="manageId")
	public Manage getManage() {
		return manage;
	}


结果好了,原来要加mappedby会多生成一个关联表,但是mappby的作用出了不生成关联表还有什么用处呢?

于是我查了一下资料:下面是在网上复制的

切记:凡是涉及到双向关联的,如果有一方已经建立了关联,另一方都要写mappedBy!!!一般写在OneToMany这里(因为实际操作中,数据库的关系都是建立在多的一方,那么在类中,维护关系应该也给多的一方,所以在一的一方需要映射到多的一方对一的引用... 有点绕口..);

name的值为:在多的一方对一的引用的属性名.

 

在定义对象映射时OneToMany 和 ManyToMany映射,有mappedBy属性。
当不指定mappedBy属性时以ManyToOne为例,向多端增加一个对象时,执行如下操作
bid.setItem(item);
bids.add(bid); 

注意bid是竞价,是many端,而item是商品是one端即从端!

bid为owner端,在不映射mappedBy属性时,hibernate会执行两次sql操作,
在映射了mappedBy属性时,从端的变化会被忽略。此时若只调用item.getBids.add(bid),对象之间
的关系是会被忽略的。只有同时调用了bid.setItem(item)时,实体之间的关系才能建立。 

参考网站http://blog.163.com/fengzhisha0914@126/blog/static/150314785201071075330236/

http://www.myexception.cn/j2ee/16632.html

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值