【问题标题】:Store a big String in database?在数据库中存储一个大字符串?
【发布时间】:2018-06-18 13:28:55
【问题描述】:

在 SQL Server 数据库中存储大字符串的最佳方法是什么。

我正在使用varchar(8000),但在使用 Hibernate 持久化我的对象时出现此异常:

>Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.

【问题讨论】:

  • 使用 varchar(max)

标签: java sql-server hibernate


【解决方案1】:

您使用的是哪个版本的 SQL Server?如果版本高于 2005 使用VARCHAR(MAX)。如果是2005之前的版本可以使用TEXT

【讨论】:

  • 如果 OP 使用的是 SQL Server 2005,我建议他们升级,然后使用varchar(MAX)! 2005 已经很久没有支持了,text 已被弃用。
  • 我们可以把this link 固定在某个地方吗?它告诉人们不要使用 text、ntext 和 image,因为它们将被删除,我看到人们经常建议这些类型,由于建议而被否决
【解决方案2】:

当你想在SQL Server 上存储一个非常大的字符串时,你可以使用:

 varchar(max) 

【讨论】:

  • 我这样做了: ALTER TABLE myTable ALTER COLUMN myVolumn varchar(8000);但仍然得到同样的异常。
  • @Oviic 你将列更改为相同的数据类型varchar(8000),当然你会得到同样的错误。
【解决方案3】:

好吧,我可以看到休眠标签,你需要@Lob标签来存储超大对象。

指定持久性属性或字段应作为 大对象到数据库支持的大对象

例子:

@Lob @Basic(fetch=LAZY)
   @Column(name="REPORT")
   protected String report;

来自Hibernate Docs.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    相关资源
    最近更新 更多