如何使用EclipseLink向实体添加自定义(用户定义)属性?

时间:2012-03-14 03:45:52

标签: eclipselink custom-properties

我想将用户定义的自定义字段添加到EclipseLink中的现有实体。出于性能原因,我希望它们直接存储在实体的表中,我也希望它们是“一等公民”,即在查询中可用。

从实现的角度来看,实体应该有两种方法来设置和获取自定义字段:

public Object getCustomProperty(String key) { ... }
public void setCustomProperty(String key, Object value) { ... }

设置自定义属性foo时,EclipseLink应将值存储在实体表中名为custom_foo的字段中。

从最终用户的角度来看,我想提供一个GUI,用户可以在其中定义和管理自定义字段,然后将这些字段动态添加到数据库中或从数据库中删除。

这在EclipseLink中是否可行?

此致 约亨

1 个答案:

答案 0 :(得分:1)

查看EclipseLink的可扩展性功能 http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Extensible_Entities 这支持添加列: http://wiki.eclipse.org/EclipseLink/DesignDocs/368365 看起来有点像你要求的 - 除了它不应该存储在主表中的冲突声明,然后说明它应该存储在实体的表" custom_foo"柱。

您需要创建用于创建映射的GUI。 Eclipselink附带了一个从orm.xml文件读取的元数据源实现,因此如果GUI无法写入orm文件,您可能必须编写自己的EclipseLink实现。