我正在尝试使用hibernate JPA将对象保存在数据库中。
对象已经有了一个类型层次结构,我正在尝试使用hibernate。
CatalogPackage
对象具有所有重要属性和所有getter。
CatalogPackageImpl
(extends CatalogPackage
)对象没有属性,但大部分是setter。
这两个类都是非抽象的。
我们希望代码引用CatalogPackage
个对象。但是在初始化hibernate时,它会抱怨CatalogPackage
类中缺少setter。
我如何建议在构建对象时使用子类来休眠?
我不想将所有setter移动到超类,我不想使用CatalogPackageImpl
作为实体。
答案 0 :(得分:0)
即使我在CatalogPackage
中定义setter方法时看不到问题,因为可以将它们标记为private
以避免在外部世界中使用它们。
既然你没有粘贴你的实体配置,并且你说Hibernate抱怨setter方法我可以断定你使用你的getter来描述你的实体映射,对吗?
在这种情况下,Hibernate总是会抱怨,因为它假设任何映射到数据库的内容应该在两个方向上完成,如果它可以从数据存储中读取,那么应该允许它在那里写入
所以你有以下任何一种解决方案:
将映射从getter方法移动到字段,并将访问类型设置为实体顶部的字段:
@Access(AccessType.Field)
class CatalogPackage {
...
}