【发布时间】:2011-03-31 13:58:25
【问题描述】:
我尝试使用 DescriptorCustomizer 创建 ObjectArrayMapping:
公共类 MyDescriptorCustomizer 实现 DescriptorCustomizer {
公共无效自定义(ClassDescriptor 描述符)抛出异常 {
// 将类描述符设置为聚合集合。
描述符.descriptorIsAggregateCollection();
// 删除我的属性的旧映射(默认):
descriptor.removeMappingForAttributeName("attributeName");
// 创建新的 ObjectArrayMapping:
ObjectArrayMapping arrayMapping = new ObjectArrayMapping(); // 设置属性。
arrayMapping.setReferenceClass(MyClass.class);
arrayMapping.setAttributeName("attributeName");
arrayMapping.setFieldName("fieldName");
arrayMapping.setStructureName("结构名");
// 添加映射到描述符。
描述符.addMapping(arrayMapping);
}
}
问题如下:ObjectArrayMapping 要求 Class Descriptor 是一个 AggregateCollection,这就是我为我的描述符设置此属性的原因。
但在此之后,属于 DirectToFieldMapping 类型的所有其他映射(对于其他字段)都将丢失,因为它们需要正常的描述符。
您有什么想法可以避免这个问题吗?任何帮助将不胜感激。
如果您需要实体代码或其他东西,我可以添加它。
谢谢。
【问题讨论】:
标签: java jpa eclipselink