Как добавить пользовательские (определяемые пользователем) свойства к объектам с EclipseLink? - PullRequest
1 голос
/ 14 марта 2012

Я хотел бы добавить пользовательские настраиваемые поля в существующую сущность в EclipseLink. Из соображений производительности я хочу, чтобы они хранились непосредственно в таблице сущности, и я также хочу, чтобы они были «гражданами первого класса», то есть использовались в запросах.

С точки зрения реализации у сущности должно быть два метода для установки и получения настраиваемых полей:

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

При установке пользовательского свойства foo EclipseLink должен хранить значение в таблице сущности в поле с именем custom_foo.

С точки зрения конечного пользователя, я хотел бы предоставить графический интерфейс, где пользователь может определять и управлять настраиваемыми полями, которые затем динамически добавляются или удаляются из базы данных.

Возможно ли это в EclipseLink?

С уважением, Jochen

1 Ответ

1 голос
/ 14 марта 2012

Ознакомьтесь с функцией расширяемости EclipseLink http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Extensible_Entities Это с поддержкой добавления столбцов: http://wiki.eclipse.org/EclipseLink/DesignDocs/368365 кажется чем-то похожим на то, что вы просите - за исключением конфликтующего утверждения, которое не должно храниться в основной таблице, а затем будет указано, что оно должно храниться в столбце таблицы сущности «custom_foo».

Вам нужно будет создать графический интерфейс, который создает сопоставления. Eclipselink поставляется с реализацией источника метаданных, которая читает из файла orm.xml, поэтому вам, возможно, придется написать свою собственную реализацию для EclipseLink, если ваш GUI не может записать в файл orm.

...