加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

java-在Hibernate中持久化可序列化对象

发布时间:2021-01-31 16:04:38 所属栏目:MySql教程 来源:网络整理
导读:我试图保留包含一些大型可序列化类型的对象.我希望Hibernate自动生成我的DDL(使用Hibernate批注).在大多数情况下,这是可行的,但是当持久化这些类型时,Hibernate使用的默认数据库列类型为tinyblob.不幸的是,这在尝试持久化我的类时会导致崩溃,因为这些类型

我试图保留包含一些大型可序列化类型的对象.我希望Hibernate自动生成我的DDL(使用Hibernate批注).在大多数情况下,这是可行的,但是当持久化这些类型时,Hibernate使用的默认数据库列类型为tinyblob.不幸的是,这在尝试持久化我的类时会导致崩溃,因为这些类型不适合tinyblob的长度.

但是,如果我手动设置类型(使用@Column(columnDefinition =“ longblob”),或更方便地使用@Column(length = 500000)),则可以正常工作.有什么方法可以使默认二进制类型为longblob而不是tinyblob,从而无需在每个字段上手动指定@Column注释吗?

ExampleClass.java:

public class ExampleClass
{
  @Column(columnDefinition="longblob")
  ExampleSerializable ser1;

  @Column(columnDefinition="longblob")
  ExampleSerializable ser2;

  ...
}

ExampleSerializable.java:

public class ExampleSerializable implements java.io.Serializable
{
  // MANY Fields
}

编辑

由于似乎有些混乱:使用@Column(columnDefinition =“ longblob”)注释每个字段(或更方便地使用@Column(length = 500000)),已经可以使用了.我正在寻找一种不需要我为每个字段添加注释的解决方案.

最佳答案 我认为(未进行测试)Hibernate将根据列长(分别为255、65535、16777215)生成一个tinyblob,blob,mediumblob列,默认为255.我会尝试指定它(这将是一个便携式解决方案).

现在,如果您确实想强制执行操作,则必须扩展MySQL语言(但这会损害可移植性).

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读