首页 > 解决方案 > org.hibernate.MappingException:无法确定类型:javafx.scene.image.Image,在表:PRODUCT

问题描述

我正在开发一个销售应用程序,我正在使用 Jpa 和休眠如何修复此错误:“ org.hibernate.MappingException:无法确定类型:javafx.scene.image.Image,在表:PRODUCT,对于列:[ org.hibernate.mapping.Column(图片)]"

我的课产品

@Entity
@Table(name="PRODUCT", schema = "ROOT" )
public class Product {

private SimpleIntegerProperty productId;
private SimpleStringProperty productName;
private Image picture;
private Date addingDate;
// ....

}


public Product() {

    this.productId = new SimpleIntegerProperty();
    this.productName = new SimpleStringProperty();
    
}

/* getters and setters */
@Column(name= "picture")
public Image getPicture() {
    return this.picture;
}

public void setPicture(Image picture) {
    
    InputStream stream = null;
    try {
        stream = new FileInputStream(picture.getUrl());
    } catch (FileNotFoundException e) {   System.out.println(e.getMessage());   }
        
    picture = new Image(stream);
    
    this.picture = picture;
}

标签: javahibernatejavafx

解决方案


在我根据他上面@oh-god-spiders 所说的找到问题的解决方案后,我想与你分享

1.不要使用

import javafx.scene.image.Image;

private Image picture;

你必须像这样使用字节类型:

private byte[] picture;

所以

/* getters and setters */

@Column(name= "picture")
public byte[] getPicture() {
    return this.picture;
}

public void setPicture(byte[] picture) {
    
    this.picture = picture;
}

请参阅本教程:

使用 Hibernate 在数据库中检索和保存图像

2. 如果要将字节更改为图像

byte[] pictureImageInByte = product.getPicture();

ByteArrayInputStream imageDate = new ByteArrayInputStream(pictureImageInByte);
            
Image image = new Image(imageDate);

在这个问题中查看更多信息:conversion d'un byteArray[] en image


推荐阅读