springboot整合hibernate(非JPA)(二)
springboot整合hibernate,非jpa,若是jpa就简单了,但是公司项目只有hibernate,并要求支持多数据库,因此记录下整合开发了。基本入门可参考官网
https://docs.jboss.org/hibernate/orm/5.5/quickstart/html_single/#tutorial_annotations 为支持多数据库,下面将实现:
1、springboot2.3.7整合hibernate最新稳定版Hibernate ORM 5.5(2021年7月11日21:53:22)
2、实现ID主键自动生成(为支持MySQL、postgre SQL、Oracle)表关联
这里实现hibernate复杂的多对多,一对多、一对一等关系。
一、查询
1.1 一对多
在UserBean中添加,注意一对多关联的结果为集合,顾使用List
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="user_id")//注释本表中指向另一个表的外键。
private List<UserRoleBean> userRole;
表示当前表user的主键id(默认)
关联到user_role表的user_id字段
执行查询:
@GetMapping("get")
public Object get(){
List from_userBean = sessionFactory.getCurrentSession().createQuery(
"from UserBean"
).list();
return from_userBean;
}
若不想用默认的主键关联,可以这样:
/**
* 将 t_user 表的 password 字段 left join 到 t_user_role 表的id
* name 指向t_user_role的id
* referencedColumnName 为本表t_user的 password字段
*/
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "id",referencedColumnName = "password")
private List<UserRoleBean> userRole;
结果如下:
一对一也是这样