深夜里的一盏灯,要是昏黄的,有一个带着眼镜的孩子,正在奋笔疾书,那不是写代码是在写世界。好啦,回到正题,通常如果单标签操作都是比较容易上手的,但是涉及到多表就会让头发感到畏惧和无奈。所以,为了我们乌黑靓丽的头发,用Hibernate的注解一定太符合人心。
一、这些注解要注意
@OnetoOne,关联的一方才设置*/
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="外键列名",referencedColumnName="参考的另一个表中的哪一列",unique=true)
/**双向一对一,就是用主键关联。被关联的一方不需要设置@OnetoOne,关联的一方才设置其余属性照常*/
/**无外键关联方一般外键维护是交给有外键的关联方并且这边就不需要些joinColumn了*/
@OneToOne(mappedBy="另一方中关联本方的属性名,将外键维护交给对方",cascade=CascadeType.ALL)
/**有外键的关联方*/
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="外键列名",referencedColumnName="参考的另一个表中的哪一列(可不写)",unique=true)
//表示唯一性 多对多注解(因为外联的是中间表,一般级联操作都是all,就算是删除也是删除中间表中的属性) 例如学生对课程,这边是学生。
Path<Object> path = root.get("字段名");
CriteriaBuilder.In<Object> in = criteriaBuilder.in(path);
in.value(OrderRefund.Status.pending);
in.value(OrderRefund.Status.approved);
in.value(OrderRefund.Status.received);
in.value(OrderRefund.Status.receiveing);
restrictions = criteriaBuilder.and(restrictions, criteriaBuilder.and(in));
二、Hibernate难道根据实体类来做事情的,一定要丢一个PO类给它吗?
答案是没错,是的,丢一个数字,字符串是想做啥子?人家Hibernate本来就是靠Entity持久化对象去数据库做数据持久化的操作。
Unknown entity: java.lang.Integer; nested exception is org.hibernate.MappingException: Unknown entity: java.lang.Integer
org.springframework.orm.hibernate5.HibernateSystemException: Unknown entity: java.lang.Integer; nested exception is org.hibernate.MappingException: Unknown entity: java.lang.Integer
at org.springframework.orm.hibernate5.SessionFactoryUtils.convertH