tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luis Fernando Planella Gonzalez <lfpg....@gmail.com>
Subject Problem with OpenJPA after upgrading to OpenEJB 3.1.1
Date Thu, 23 Jul 2009 17:37:49 GMT
Hi all.
I've upgraded to OpenEJB 3.1.1, and having an issue with mappings using OpenJPA specific annotations,
such as @Persistent to persist an InputStream as blob.
The strange part is that I was already using OpenJPA 1.2.1 with OpenEJB 3.1.0, and without
problems. If I revert to this version, everything works ok.
Previously I had the same problem when I accidentally left the openjpa-XXX.jar file in WEB-INF/lib
(thus @Persistent was defined in 2 separate classloaders, the global and the web-app specific,
which caused problems). That's not the case now.

The exception root cause:

Caused by: <openjpa-1.2.0-r422266:683325 fatal user error> org.apache.openjpa.persistence.ArgumentException:
Embedded property "nl.strohalm.cyclos.entities.customization.images.Image.image" declares
a mapping override for "contents", but that is not a persistent property in the embedded type.
	at org.apache.openjpa.persistence.jdbc.AnnotationPersistenceMappingParser.parseAttributeOverrides(AnnotationPersistenceMappingParser.java:1208)
	at org.apache.openjpa.persistence.jdbc.AnnotationPersistenceMappingParser.parseMemberMappingAnnotations(AnnotationPersistenceMappingParser.java:962)
	at org.apache.openjpa.persistence.AnnotationPersistenceMetaDataParser.parseClassAnnotations(AnnotationPersistenceMetaDataParser.java:622)
	at org.apache.openjpa.persistence.AnnotationPersistenceMetaDataParser.parse(AnnotationPersistenceMetaDataParser.java:352)
	at org.apache.openjpa.persistence.PersistenceMetaDataFactory.load(PersistenceMetaDataFactory.java:229)
	at org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:474)
	at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:294)
	at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:581)
	at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541)
	at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308)
	at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:581)
	at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541)
	at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308)
	at org.apache.openjpa.meta.ValueMetaDataImpl.resolveDeclaredType(ValueMetaDataImpl.java:431)
	at org.apache.openjpa.meta.ValueMetaDataImpl.resolve(ValueMetaDataImpl.java:410)
	at org.apache.openjpa.jdbc.meta.ValueMappingImpl.resolve(ValueMappingImpl.java:470)
	at org.apache.openjpa.meta.FieldMetaData.resolve(FieldMetaData.java:1676)
	at org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:416)
	at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1689)
	at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1624)
	at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:717)
	at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616)
	at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541)
	... 65 more


The involved classes:

@MappedSuperclass
public abstract class Image extends BaseEntity {

    @Embedded
    @AttributeOverrides({ 
        @AttributeOverride(name = "height", column = @Column(name = "thumbnail_height")),

        @AttributeOverride(name = "width", column = @Column(name = "thumbnail_width")), 
        @AttributeOverride(name = "length", column = @Column(name = "thumbnail_length")),

        @AttributeOverride(name = "contents", column = @Column(name = "thumbnail_contents"))

    })
    private ImageData thumbnail;

    @Embedded
    @AttributeOverrides({
        @AttributeOverride(name = "height", column = @Column(name = "image_height")), 
        @AttributeOverride(name = "width", column = @Column(name = "image_width")), 
        @AttributeOverride(name = "length", column = @Column(name = "image_length")), 
        @AttributeOverride(name = "contents", column = @Column(name = "image_contents", columnDefinition
= "mediumblob")) 
    })
    private ImageData image;

    ...
}

@Embeddable
public class ImageData {

    @Basic(optional = false)
    private Integer     height;

    @Basic(optional = false)
    private Integer     width;

    @Basic(optional = false)
    private Integer     length;

    @Lob
    @Persistent(optional = false, fetch = FetchType.LAZY)
    private InputStream contents;

    ...
}

Can anybody help?

Mime
View raw message