Eclipselink: ObjectArrayMapping и ClassDescriptor - PullRequest
0 голосов
/ 31 марта 2011

Я пытаюсь создать ObjectArrayMapping с помощью DescriptorCustomizer:

открытый класс MyDescriptorCustomizer реализует DescriptorCustomizer {
public void customize (дескриптор ClassDescriptor) выдает исключение {
// Установить дескриптор класса в совокупную коллекцию.
descriptor.descriptorIsAggregateCollection ();
// Удалить старое отображение (по умолчанию) для моего атрибута:
descriptor.removeMappingForAttributeName ( "ATTRIBUTENAME");
// Создать новый ObjectArrayMapping:
ObjectArrayMapping arrayMapping = new ObjectArrayMapping (); // Настройка свойств.
arrayMapping.setReferenceClass (MyClass.class);
arrayMapping.setAttributeName ( "ATTRIBUTENAME");
arrayMapping.setFieldName ( "FIELDNAME");
arrayMapping.setStructureName ( "structureName");
// Добавить отображение в дескриптор.
descriptor.addMapping (arrayMapping); * +1017 * }
}

Проблема в следующем: ObjectArrayMapping требует, чтобы дескриптор класса был AggregateCollection, поэтому я установил это свойство для моего дескриптора.
Но после этого все другие отображения (для других полей), относящиеся к типу DirectToFieldMapping, теряются, поскольку для них требуется нормальный дескриптор.
У вас есть идеи, как избежать этой проблемы? Любая помощь будет оценена.
Если вам нужен код Entity или что-то еще, я могу добавить его. Спасибо.

1 Ответ

0 голосов
/ 05 декабря 2011

ObjectArrayMapping требует, чтобы целевой дескриптор был агрегатным (не агрегатным сбором), но, более конкретно, требует, чтобы он отображал структуру, а не таблицу.

Вы, похоже, делаете агрегатную коллекцию исходного дескриптора,неправильно, вам нужно сделать целевую совокупность (т.е. Embeddable, поэтому просто сопоставьте ее как @Embeddable в JPA).Вам также нужно будет определить DescriptorCustomizer для установки значения structName и fieldOrdering.

Или, если вы используете 2.3, вы можете использовать аннотацию @Struct и аннотацию @Array для определения ObjectArrayMapping, вам не нужно никаких настройщиков.

http://wiki.eclipse.org/EclipseLink/Examples/JPA/PLSQLStoredFunction

...