目前,在数据库中我有下表(PostgreSQL 9.2
):
jackpot_image
id jackpot_id mime_type image_data
serial integer varchar(32) bytea
我有以下实体:
@Entity
@Table(name = "jackpot_image")
public class JackpotImage {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name="jackpot_id")
private int jackpotId;
@Column(name="mime_type")
private String mimeType;
@Column(name="image_data")
private byte[] imageData;
//GET, SET
}
以及以下 DAO:
public class JackpotImageDao {
public JackpotImage selectImage(int imageId){
String hql = "FROM JackpotImage WHERE id = :imageId";
Query query = getSession().createQuery(hql);
query.setInteger("imageId", imageId);
return (JackpotImage) query.uniqueResult();
}
public void save(JackpotImage image){
getSession().saveOrUpdate(image);
}
}
问题是当我尝试保存然后检索图像时,我得到了不同的字节数组。
JackpotImage image;
JackpotImageDao imageDao;
//Getting image and ImageDAO
imageDao.save(image);
JackpotImage img = imageDao.selectImage(image.getId());
现在,image
的二进制数据不同于 img
的二进制数据。为什么?我该如何解决?
最佳答案
在字段 imageData 中添加注解 @Lob
。
关于java - 将 byte[] 与 hibernate 保存到 postgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29432104/