关于使用JPA的@ManyToOne注解的方法及踩过的雷

 

举个例子:

    有两张表,员工表(employee)和部门表(department)。这个时候,员工对于部门来说,属于ManyToOne的一个关系,即多个员工对应一个部门。当我们创建表结构时,应在多的一方去维护表关系,也就是说,应将@ManyToOne注解加在员工表中,并且设置为懒加载。

 

员工表:

    关于使用JPA的@ManyToOne注解的方法及踩过的雷_第1张图片

fetch = FetchType.Lazy 懒加载,作用是用到该属性的时候,才会将该属性加载到内存。加载employee对象时,并不会去立即加载dept属性。如果不设置,缺省为eager,急加载。

 

部门表:

 

    关于使用JPA的@ManyToOne注解的方法及踩过的雷_第2张图片

踩过的雷:

采用自动建表,如上两张表创建后,并没有创建出外键关系。

原因:使用mysql数据库+Hibernate自动建表时,将引擎类型创建成了MyISAM类型。目前Mysql只有InooDB类型的引擎支持外键约束。

 

 

 

 

 

 

 

    

你可能感兴趣的:(Mysql,JPA)