有关Hibernate1对多映射问题

「已注销」 2014-09-16 08:44:06
有两张表,A表和B表(1对多关系)
A表为主表,有aid(自增) 和 name字段
B表为子表,也有bid 和name字段
我用的是Hibernate映射成class,现在出现问题
A表 B表都各要设一个主键 那是必须的,因为不设主键 hibernate会多生成一张表
所以,我设表A aid为 主键,表B bid为主键,生成了2个class,
但是生成之后的Class B,没这个bid这个属性,只会生成一个private A a 这个class。
所以我插入数据就郁闷了。
Class A 插入数据 aid = 1(自增) name = test1
Class B 的id该如何用语句来插入呢?没有对bid的set 和get
...全文
155 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
july_et0708 2014-09-18
  • 打赏
  • 举报
回复
你是不是bid既作为外键,又作为主键了?
boybaozi 2014-09-18
  • 打赏
  • 举报
回复
B表bid是作为外键引用自A表aid的吧? 你想要插入B到数据库可以先得到一个a的表对象(你要确认得到,或者先save(A)),然后b的对象通过setA方法 为自己赋值,之后再将自己save
zy_think123 2014-09-18
  • 打赏
  • 举报
回复
引用 4 楼 aquariusk 的回复:
[quote=引用 1 楼 zy353003874 的回复:] 你的hibernate映射成Class是什么意思? 如果是一对多的话,我用注解的方式跟你说 A :aid,name; B:bid,name; 在aid的get方法上写上@ManyToOne还有如果你是想要双向的话,那么另外一边要写上@OneToMany(mappedBy="aid");
我也是用的自动生成注解的方式,
@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "USERID", nullable = false)
	public TrRole getTrRole() {
		return this.trRole;
	}

	public void setTrRole(TrRole trRole) {
		this.trRole = trRole;
	}
但是,表B 的bid你如何set get呢?[/quote] 表B的get主要加上,其他的都一致
@OneToMany(mappedBy="TrRole")
LOVE-漂泊 2014-09-16
  • 打赏
  • 举报
回复
引用 3 楼 aquariusk 的回复:
[quote=引用 2 楼 sizhouzhou 的回复:] B表应该有个外键的吧
是啊,B表的外键是A表的aid啊[/quote] 不用setid吧 只需setclass A就行 然后就可以取出id
「已注销」 2014-09-16
  • 打赏
  • 举报
回复
引用 1 楼 zy353003874 的回复:
你的hibernate映射成Class是什么意思? 如果是一对多的话,我用注解的方式跟你说 A :aid,name; B:bid,name; 在aid的get方法上写上@ManyToOne还有如果你是想要双向的话,那么另外一边要写上@OneToMany(mappedBy="aid");
我也是用的自动生成注解的方式,
@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "USERID", nullable = false)
	public TrRole getTrRole() {
		return this.trRole;
	}

	public void setTrRole(TrRole trRole) {
		this.trRole = trRole;
	}
但是,表B 的bid你如何set get呢?
「已注销」 2014-09-16
  • 打赏
  • 举报
回复
引用 2 楼 sizhouzhou 的回复:
B表应该有个外键的吧
是啊,B表的外键是A表的aid啊
LOVE-漂泊 2014-09-16
  • 打赏
  • 举报
回复
B表应该有个外键的吧
zy_think123 2014-09-16
  • 打赏
  • 举报
回复
你的hibernate映射成Class是什么意思? 如果是一对多的话,我用注解的方式跟你说 A :aid,name; B:bid,name; 在aid的get方法上写上@ManyToOne还有如果你是想要双向的话,那么另外一边要写上@OneToMany(mappedBy="aid");

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧