我们正处于使用JPA的项目的开始编码阶段。我们使用Netbeans中的工具根据我们的模式生成JPA实体。它工作得很好,但是从那时起我们就不得不自定义实体。
我们对模式进行了相当大的更改(添加了一个表,并交换了其他人之间的关系),因此需要更新我们的实体。我们无法重新生成它们,因为我们必须重新应用我们拥有的所有自定义项,因此我们手动完成所有这些操作。没什么大不了的,比我期望的更耗费时间。
自定义是我们添加的命名查询,Cascade类型,我们自己的String方法,equals和哈希代码方法。我想过创建扩展实体的类来添加toString,equals和hascode方法,这样如果我们重新生成它们,它们就不会丢失。但我不确定级联类型和命名查询。
有更好的方法,还是这只是一厢情愿的想法?
答案 0 :(得分:1)
我相信这只是一厢情愿的想法。生成实体并扩展它们只会给您带来一系列不同的问题。您生成的实体必须注释为@MappedSuperclass,并且不会有表名 - 加上您的扩展可能必须重复一些注释,而且您还必须有时调整命名查询自定义....所有只是一个麻烦。
通常,从数据库模式生成实体是一次性的事情,可以永远手工维护。
然而,可以在更长的时间段内从实体生成数据库模式。但是,即使这样,您也必须仔细管理模式迁移问题。
底线 - 同步持久性实体和数据库模式需要仔细的手动工作。