如何在EclipseLink

时间:2016-02-19 23:15:13

标签: java eclipselink

我在Hibernate项目中使用代码生成做了一些非标准的事情,现在我正在尝试将它移植到EclipseLink。在Hibernate中,我使用Tuplizers成功实现了所有这些功能。在EclipseLink中,我认为描述符是我应该使用的,但它们有很多方法和如此简洁的文档,我无法弄清楚我需要的功能是否存在,更不用说如何使用它们了。

我需要以下配置功能:

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

0 个答案:

没有答案