我正在使用Hibernate Tools来生成我的实体
现在我必须编辑并添加新的注释(@ JsonIgnore
等...)
我的问题是:
将来我将不得不在我的数据库中添加额外的列,并使用hibernate工具重新生成我的实体
现在我的实体被覆盖了,失去了我的编辑
存在一种模式?或解决方案?
不要失去我的变化
谢谢。
答案 0 :(得分:1)
我建议不要重新生成你的实体。我建议使用新列手动更新您的实体并使用以下设置:
<property name="hibernate.hbm2ddl.auto">validate</property>
确保列映射正常工作。
我从不尝试这个,但其他解决方案是扩展实体类。例如:
@Entity
public class YourGeneratedEntity {
}
public class YourClassWithModifications extends YourGeneratedEntity {
}
使用此方法,在重新生成实体类时,不会释放使用实体属性的修改。
答案 1 :(得分:0)
我在这里非常政治,我认为来自@Neil McGuigan的评论是非常糟糕的建议。而Dherik答案中的第二点也很糟糕。
提供了自动生成工具,以简化现有数据库中hibernate / JPA的使用。一旦你创建了初始实体,你永远不会再重新创建它们原因很简单,该工具很愚蠢,它唯一可以做的就是假设你要映射你的对象与它们在数据库中的完全相同......它不会为您创建任何UserTypes,Embeddables,SecondaryTable或Converters注释。它不知道(或做不好)映射关联,因为一般情况下你应该更喜欢单向关联。
获得初始映射后,您需要对其进行处理,以将其转换为适当的面向对象模型。
底线是:如果您的Entity对象具有与数据库相同的结构和形状,那么您做错了。面向对象设计和关系建模是两个截然不同的东西。甚至还有一个名为Object-Relational impedance mismatch的术语来解释这种差异。