1

Java EE + OracleDB アプリケーションで EclipseLink を使用して ORM を作成しようとしています。問題は、ORDImage タイプをデータベースからマップする方法がわからないことです。@Struct を使用しようとしましたが、成功しませんでした。

2 つの @Struct 構造を作成しました。

@Embeddable
@Struct(name = "ORDSource", fields = {"localData", "srcType", "srcLocation", "srcName", "updateTime", "local"})
public class OrdSourceStruct implements Serializable {
    private static final long serialVersionUID = 1L;

    @Lob
    @Basic
    @Column(name = "localData")
    private byte[] localData;
    @Column(name = "srcType")
    private String srcType;
    @Column(name = "srcLocation")
    private String srcLocation;
    @Column(name = "srcName")
    private String srcName;
    @Column(name = "updateTime")
    @Temporal(TemporalType.DATE)
    private Date updateTime;
    @Column(name = "local")
    private short sLocal;

    //getters and setters
    .......
}

そして2番目のもの:

@Struct(name = "ORDImage", fields = {"source", "height", "width", "contentLength", "compressionFormat", "mimeType"})
public class OrdImageStruct implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name = "source")
    private OrdSourceStruct source;
    @Column(name = "height")
    private Integer height;
    @Column(name = "width")
    private Integer width;
    @Column(name = "contentLength")
    private Integer contentLength;
    @Column(name = "fileFormat")
    private String fileFormat;
    @Column(name = "contentFormat")
    private String contentFormat;
    @Column(name = "compressionFormat")
    private String compressionFormat;
    @Column(name = "mimeType")
    private String mimeType;

    //getters and setters
    ...........
}

次に、エンティティ内でそれらを使用しようとしました:

@Entity
@Table(name = "ZDJECIA")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Zdjecia.findAll", query = "SELECT z FROM Zdjecia z"),
    @NamedQuery(name = "Zdjecia.findById", query = "SELECT z FROM Zdjecia z WHERE z.id = :id")})
public class Zdjecia implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "ID")
    private Short id;
    @Column(name = "ZDJECIE")
    private OrdImageStruct zdjecie;
    @JoinColumn(name = "GRZYB", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private Grzyby grzyb;

    //getters and setters
    ...........
}

しかし、OrdImageStruct 型からいくつかのデータを表示しようとしたときの結果は次のとおりです。

Exception Description: The object [[Ljava.lang.Object;@2921ef9], of class [class
[Ljava.lang.Object;], from mapping 
[org.eclipse.persistence.mappings.DirectToFieldMapping[zdjecie-->ZDJECIA.ZDJECIE]] 
with descriptor [RelationalDescriptor(com.rmsbd.entities.Zdjecia --> 
[DatabaseTable(ZDJECIA)])], could not be converted to [class [B].

私は何を間違っていますか?ORDImageをマップする他の良い方法はありますか? EclipseLinkである必要はないので、他のORMソリューションを処理できると思います。私にとって最も重要なことは、これらの ORDImage データをデータベースからアプリケーションに取得することです。

4

0 に答える 0