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 データをデータベースからアプリケーションに取得することです。