【问题标题】:How to create a Text type field in db via Hibernate+Java如何通过 Hibernate+Java 在 db 中创建文本类型字段
【发布时间】:2016-10-17 04:56:29
【问题描述】:

我确实有一个 Java Web 应用程序(struts2、hibernate、bean)+ PostreSQL 作为 DB。任务是将base64 编码文本保存在数据库中,用于某些特定表。 base64 是从 pdf 文件生成的,然后是 ciphered 使用特定算法。 pdf 文件

我进行了搜索,建议将 base64 保存为数据库中的Text 字段。在 PostgreSQL 本身内创建它没有问题,但我必须通过 Model 类 + hibernate 来创建它。

我做了什么:

导入import org.apache.struts2.components.Text;

生成的 getter/setter。在我的*.hbm.xml 文件中添加了一行。

<property name="base64signed" column="base64signed" />

我得到了这个错误:

无法确定类型:org.apache.struts2.components.Text

【问题讨论】:

  • 将所有注释放在公共 getter 方法上,而不是私有
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。

标签: java postgresql hibernate


【解决方案1】:

我认为你应该使用这个注释:

@Lob(type = LobType.CLOB)

【讨论】:

    【解决方案2】:

    我认为 Hibernate 不支持将 org.apache.struts2.components.Text 转换为 DB 的 varchar。

    所以你把它存储为上面提到的 LOB 或 CLOB

    @Lob
    private Text base64signed;
    

    或者您可以通过将“base64signed”字段声明为字符串来简化操作,这样会减少 DB 中的内存

    @Column
    private String base64signed;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 2015-09-15
      • 2021-08-13
      相关资源
      最近更新 更多