Hibernate注解

zhengbocong 2013-12-23 09:00:09
现在有两个表,对应两个类,一个是员工信息,一个部门信息,员工表中有一个外键是引用了部门表的主键,在Hibernate的注解中需要怎么配置,才能在员工类中使用userInfo.departmentName就能获取到员工的部门名称,我在网上查找的一些方法,总是出现各种错误....求搞手


@Entity
public class UserInfo implements Serializable {
private static final long serialVersionUID = 1L;

@Id
private Integer userId;
private Integer roleId;
private String username;
private String password;
private Integer sex;
private Integer age;
private Integer departmentId;
private Integer position;
private String introduction;
private String interests;
private String phone;
private String mobilephone;
private String email;
private String address;

private Department department;

//省略了get、set方法

}




@Entity
public class Department implements Serializable {
private static final long serialVersionUID = 1L;

@Id
private Integer departmentId;// 部门ID
private String departmentName;// 部门名称
private String duty;// 部门职能
private String phone;// 部门电话
}

...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengbocong 2013-12-23
  • 打赏
  • 举报
回复
引用 6 楼 zhouren1314 的回复:
[quote=引用 5 楼 zhengbocong 的回复:] [quote=引用 4 楼 zhouren1314 的回复:] 记住 多对一 的问题 家注解的时候 一定要有 @joinColumn(...)
我这个例子是多对一不是一对一么,无论是多对一还是一对一的注解我都配置过了,都会出现错误,然后我有一种是这样配置的 UserInfo类里面:
@OneToOne(mappedBy="userInfo")
	private Department department;
Department类里面:
@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="departmentId")
	private UserInfo userInfo;
这种情况就会出现我拿到的员工List,第一个userInfo.departmentId是1,第二个userInfo.departmentId是2,也就是说:员工引用部门的外键列变成了员工类的userId,不和userInfo.departmentId对应[/quote] 一对一 好像没必要配置 joincolumn[/quote] 不用joincolumn它怎么才能知道我这个类中哪个是外键来着。。。
乔不思 2013-12-23
  • 打赏
  • 举报
回复
引用 5 楼 zhengbocong 的回复:
[quote=引用 4 楼 zhouren1314 的回复:] 记住 多对一 的问题 家注解的时候 一定要有 @joinColumn(...)
我这个例子是多对一不是一对一么,无论是多对一还是一对一的注解我都配置过了,都会出现错误,然后我有一种是这样配置的 UserInfo类里面:
@OneToOne(mappedBy="userInfo")
	private Department department;
Department类里面:
@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="departmentId")
	private UserInfo userInfo;
这种情况就会出现我拿到的员工List,第一个userInfo.departmentId是1,第二个userInfo.departmentId是2,也就是说:员工引用部门的外键列变成了员工类的userId,不和userInfo.departmentId对应[/quote] 一对一 好像没必要配置 joincolumn
zhengbocong 2013-12-23
  • 打赏
  • 举报
回复
引用 4 楼 zhouren1314 的回复:
记住 多对一 的问题 家注解的时候 一定要有 @joinColumn(...)
我这个例子是多对一不是一对一么,无论是多对一还是一对一的注解我都配置过了,都会出现错误,然后我有一种是这样配置的 UserInfo类里面:
@OneToOne(mappedBy="userInfo")
	private Department department;
Department类里面:
@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="departmentId")
	private UserInfo userInfo;
这种情况就会出现我拿到的员工List,第一个userInfo.departmentId是1,第二个userInfo.departmentId是2,也就是说:员工引用部门的外键列变成了员工类的userId,不和userInfo.departmentId对应
乔不思 2013-12-23
  • 打赏
  • 举报
回复
记住 多对一 的问题 家注解的时候 一定要有 @joinColumn(...)
zhengbocong 2013-12-23
  • 打赏
  • 举报
回复
引用 2 楼 zhengbocong 的回复:
[quote=引用 1 楼 Lee_jaedong 的回复:] 在UserInfo这边配置manyToOne: @ManyToOne(optional=false,fetch=FetchType.LAZY) @JoinColumn(name="department_id") private UserInfo muser =new UserInfo(); 在部门这边配置oneToMany @OneToMany(fetch=FetchType.LAZY) @JoinColumn(name="department_id") 注意数据库中UserInfo这边要存department_id,原因是ORM映射,你的department就是对应department_id 我没在IDE中测试,有可能有点小问题,但是配置就是这样的了。
我不太明白,为什么是用多对一和一对多的关系,一个userInfo对应一个部门,但是一个部门可以有多个员工,这样子算是一对一,还是多对一啊[/quote] 我按照你说的配置,出现了这个的错误: nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: com.tarena.oa.entity.Department column: departmentId (should be mapped with insert="false" update="false") 需要怎么解决..
zhengbocong 2013-12-23
  • 打赏
  • 举报
回复
引用 1 楼 Lee_jaedong 的回复:
在UserInfo这边配置manyToOne: @ManyToOne(optional=false,fetch=FetchType.LAZY) @JoinColumn(name="department_id") private UserInfo muser =new UserInfo(); 在部门这边配置oneToMany @OneToMany(fetch=FetchType.LAZY) @JoinColumn(name="department_id") 注意数据库中UserInfo这边要存department_id,原因是ORM映射,你的department就是对应department_id 我没在IDE中测试,有可能有点小问题,但是配置就是这样的了。
我不太明白,为什么是用多对一和一对多的关系,一个userInfo对应一个部门,但是一个部门可以有多个员工,这样子算是一对一,还是多对一啊
DreamRoute 2013-12-23
  • 打赏
  • 举报
回复
在UserInfo这边配置manyToOne: @ManyToOne(optional=false,fetch=FetchType.LAZY) @JoinColumn(name="department_id") private UserInfo muser =new UserInfo(); 在部门这边配置oneToMany @OneToMany(fetch=FetchType.LAZY) @JoinColumn(name="department_id") 注意数据库中UserInfo这边要存department_id,原因是ORM映射,你的department就是对应department_id 我没在IDE中测试,有可能有点小问题,但是配置就是这样的了。

81,092

社区成员

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

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