我想将用户定义的自定义字段添加到EclipseLink中的现有实体中。出于性能原因,我希望它们直接存储在实体的表中,而且我还希望它们是"第一类公民",即在查询中可用。
从实现的角度来看,实体应该有两种方法来设置和获取自定义字段:
public Object getCustomProperty(String key) { ... }
public void setCustomProperty(String key, Object value) { ... }
设置自定义属性foo
时,EclipseLink应将实体表中的值存储在名为custom_foo
的字段中。
从最终用户的角度来看,我想提供一个GUI,用户可以在其中定义和管理自定义字段,然后将其动态添加到数据库或从数据库中删除。
这在EclipseLink中可能吗?
谨致问候,Jochen
查看EclipseLink的可扩展性功能http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Extensible_Entities支持添加列:http://wiki.eclipse.org/EclipseLink/DesignDocs/368365看起来有点像你所要求的——除了不应该存储在主表中的冲突语句,然后声明应该存储在实体的表"custom_fo"列中。
您将需要创建用于创建映射的GUI。Eclipselink附带了一个从orm.xml文件读取的元数据源实现,因此如果GUI无法写入orm文件,则可能需要编写自己的实现供Eclipselink使用。