在数据库Spring Hibernate持久性中存储BLOB

时间:2011-01-18 16:14:04

标签: java oracle hibernate spring persistence

这是一个遇到的问题,并尝试了迄今为止我提供的大多数解决方案,似乎没有什么工作,这使得更难修复的问题是由于某种原因,hibernate会话不会将其详细信息打印到日志提供我在错误跟踪方面很少。我想将转换为blob的Json字符串上传到数据库中。如果有人知道我哪里出错或者可以提供和指示这将是很好的,因为我努力解决这个问题。

@Entity
@Table(name="workout")
public class Workout implements Serializable{


    private static Logger logger = Logger.getLogger(Workout.class);


    @Id
    @Column(name="workout_id")
    private int workout_id;

    @Column(name="username")
    private String username;

    @Column(name="added_date")
    private String added_date;

    @Lob
    @Column(name="workout")
    Blob workout;

    public int getWorkout_id() {
        return workout_id;
    }

    public void setWorkout_id(int workout_id) {
        this.workout_id = workout_id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAdded_date() {
        return added_date;
    }

    public void setAdded_date(String added_date) {
        this.added_date = added_date;
    }

    public Blob getWorkout() {
        return workout;
    }

    public void setWorkout(Blob workout) {
        this.workout = workout;
    }


    }

来自上传的服务

的方法
public String uploadWorkout(String json){
    Workout w = new Workout();
    w.setUsername("cmac458");
    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Date date = new Date();
    w.setAdded_date(date.toGMTString());
    w.setWorkout(getBLOBfromJSON(json));
    w.setWorkout_id(4);
    workoutDao.getSession().save(w);
    return "done";

    }

我正在使用在我的应用程序的其他部分中工作的基本hibernatetemplate.save(实体)。

非常感谢任何帮助。 谢谢 克里斯

1 个答案:

答案 0 :(得分:2)

我使用byte[]代替ob Blob类型,这样就可以了。

@Lob
@Column(nullable = false, length = 2097152)
private byte[] data;