我想将用户定义的自定义字段添加到EclipseLink中的现有实体。出于性能原因,我希望它们直接存储在实体的表中,我也希望它们是“一等公民”,即在查询中可用。
从实现的角度来看,实体应该有两种方法来设置和获取自定义字段:
public Object getCustomProperty(String key) { ... }
public void setCustomProperty(String key, Object value) { ... }
设置自定义属性foo
时,EclipseLink应将值存储在实体表中名为custom_foo
的字段中。
从最终用户的角度来看,我想提供一个GUI,用户可以在其中定义和管理自定义字段,然后将这些字段动态添加到数据库中或从数据库中删除。
这在EclipseLink中是否可行?
此致 约亨
答案 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实现。