我在Hibernate项目中使用代码生成做了一些非标准的事情,现在我正在尝试将它移植到EclipseLink。在Hibernate中,我使用Tuplizers成功实现了所有这些功能。在EclipseLink中,我认为描述符是我应该使用的,但它们有很多方法和如此简洁的文档,我无法弄清楚我需要的功能是否存在,更不用说如何使用它们了。
我需要以下配置功能:
@Entity
类Foo
,使用生成的子类Bar
对其进行实例化,该子类使用EclipseLink不需要了解的行为对其进行扩充。我想我已经使用ClassDescriptor.useFactoryInstantiationPolicy()
完成了这部分。Bar
的任何实例,生成Foo
的子类,将其作为Foo
实体保存到数据库中。我还没有足够的能力来测试这部分是否需要自定义配置。@Embedded
类baz
中的@Entity
字段Foo
,使用@Embeddable
特定生成的子类实例化Foo
与EclipseLink不需要了解的行为。或者,最好只使用Foo
构造函数的实例。这就是我目前所坚持的。我尝试了ClassDescriptor.getMappingForAttributeName("baz").getReferenceDescriptor().useFactoryInstantiationPolicy()
,但getReferenceDescriptor()
返回null。此外,如果继承该属性,getMappingForAttributeName()
将返回null。Foo
构造函数所做的”不是第3点的选项,请在填写其字段后调用每个Foo
实例上的后初始化方法,这将给出{ {1}}对封闭的baz
实例的引用,以启用某些增强行为。如何设置它们,最好是在运行时使用程序化调用?生成的类上的注释可以接受,或者可能生成一个额外的xml文件,但向Foo
本身添加任何内容都是最后的选择。