【发布时间】:2015-04-03 12:20:46
【问题描述】:
目前,在数据库中,我有下表 (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 的二进制数据不同。为什么?我该如何解决这个问题?
【问题讨论】:
-
你说
image的二进制数据与img的二进制数据不同,但你没有说你是如何确定的,或者是什么区别是。请显示小图像的完整示例,或至少显示原始和结果的前一百字节和最后一百字节。编辑您的问题以执行此操作,然后在完成后在此处发表评论。 -
另外,你的 PgJDBC 版本是什么,
SELECT current_setting('bytea_output');查询的输出是什么?
标签: java hibernate postgresql