Hibernate反向工程复合键创建额外的ID类

来源:爱站网时间:2021-09-16编辑:网友分享
我是Hibernate的新手,我似乎很难让Hibernate正确地将MySQL数据库(例如:https://launchpad.net/test-db/)反向工程为Java类。在员工中...

问题描述


我是Hibernate的新手,似乎很难让Hibernate正确地将MySQL数据库(例如:https://launchpad.net/test-db/)反向工程为Java类。

在雇员数据库模式中,有几个表:

  • 员工(主键emp_no)
  • 部门(主键dept_no)
  • 薪水(复合键emp_no和from_date)
  • dept_emp(复合键dept_no和emp_no)

问题是,当我对表(下面的配置和reveng文件)进行逆向工程时,不是创建上面的4个Java类,而是Hibernate给了我6个带有额外类的Java类bolded

  • 员工
  • 部门
  • 薪水
  • SalariesId
  • DeptEmp
  • DeptEmpId

据我所知,对于具有复合主键的表,Hibernate正在创建一个新的“ classnameID”类,该类包含两个复合键的唯一组合。相反,仅具有例如dept_no和与该特定部门相关联的emp_no的集合/列表的DeptEmp类就很棒。

关于如何让Hibernate做到这一点的任何想法?我一直在尝试.reveng文件中的许多操作,但似乎没有任何效果。

反向工程文件:

配置文件:

com.mysql.jdbc.Driverjdbc:mysql://localhost:3306/employees********org.hibernate.dialect.MySQLDialect20threadorg.hibernate.cache.NoCacheProvidertruetruetrue

谢谢!

思路:


此行为是由于在一个表中有多个列作为ID,这就是为什么Departments表没有附加的IDClass,而Salaries没有。

所以,您如何解决这个问题?在您的reveng文件中,为每个表设置唯一的ID。如果您未正确处理表中的所有主键,则可能会在代码中引起一些问题,请谨慎操作。

此外,您可以拥有这些额外的类,并将它们视为int或String,只需正确地初始化它们并在您的实体中进行设置即可。希望我在遇到这个问题时能对您有所帮助,这对我来说是很大的挑战。

上一篇:为什么我的Java repaint()方法不起作用?

下一篇:java褪色

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载