Hibernate 需要一个无参数的构造函数,并且在所有支持方法重载的语言中,这可能不是问题,但我在 ColdFusion ORM 中遇到了一个非常烦人的问题(它依赖于 Hibernate)。
如果我为我的实体声明了一个自定义构造函数(一个 init 方法)并且该构造函数需要一些参数,那么 Hibernate 无法重新水合我的实体,因为它正在调用自定义构造函数。
由于这种行为,设计始终有效的实体似乎几乎是不可能的,因此使 CF-ORM 几乎完全无用。
我发现的唯一解决方法是声明另一个我用作构造函数的自定义方法,它使实例化对象现在看起来像new SomeEntity().construct(...)
or createObject('component', 'SomeEntity').construct(...)
。真是太麻烦了……
在这一切中非常愚蠢的是你可以在不调用init
方法的情况下实例化一个实体 using createObject
,所以我想知道为什么他们决定让 Hibernateinit
在他们的实现中调用该方法,考虑到它甚至没有传递参数并在之后由其他设置它们方法。
无论如何,对于这个问题还有其他解决方法吗?
编辑: