【发布时间】:2013-02-14 15:58:43
【问题描述】:
本地我用mysql,所以我用的时候
@Column(columnDefinition = "TEXT")
不幸的是,应用程序也必须在不同的数据库中运行,我还没有被告知哪些只是“根本”。
是否可以制作具有类似效果但适用于大多数数据库的东西?我怎样才能实现它?
【问题讨论】:
本地我用mysql,所以我用的时候
@Column(columnDefinition = "TEXT")
不幸的是,应用程序也必须在不同的数据库中运行,我还没有被告知哪些只是“根本”。
是否可以制作具有类似效果但适用于大多数数据库的东西?我怎样才能实现它?
【问题讨论】:
这样的事情怎么样:
@Lob
private String someString;
我认为它更便携,应该有效地生成 TEXT 或 LONGTEXT 数据类型。
【讨论】:
@Lob 可能会导致您的数据库将数据与表分开存储为大对象;这可能不一定是你想要的。 See this example to understand what I mean
clob 在PostgreSQL 中不受支持,因此您应该这样做:create domain clob as text;
如果您使用 @LOB,您将遇到 ORA-00932 异常,并且 SQL 包含 DISTINCT (http://ora-00932.ora-code.com/)
我认为解决方案取决于字符串的字节大小。如果它
出于数据库兼容性的原因,我建议使用 4000 字节:
【讨论】:
我遇到了同样的问题,仅在 application.properties 上向 MySQL Url 添加一个参数即可解决:
spring.datasource.url=jdbc:mysql://localhost:3306/database?jdbcCompliantTruncation=false
参数为jdbcCompliantTruncation=false
看起来像是一种解决方法,但只有它有效......
【讨论】:
类似问题我在将图像上传到 mysql 数据库时遇到错误,@Column(columnDefinition = “TEXT”)。
您可以在 postgresql 以及 mysql 数据库中使用。
只是我变了
@Lob
@Column(name=imageFiie)
private String image;
注意: 在使用 PostgresSQL 时,我们可能需要定期存储任意长度的字符串。
为此,PostgreSQL 提供了三种字符类型:
这是因为 JPA 规范使用了 SQL 标准。因此,它没有定义一种简单的方法来处理这种类型的对象,例如使用 @Text 注释。
幸运的是,我们有几种方法可以管理 PostgreSQL 数据库的 TEXT 数据类型:
我们可以使用@Lob注解 或者,我们也可以使用@Column注解,结合columnDefinition属性
【讨论】: