本地我使用mysql,所以当我使用
时 @Column(columnDefinition = "TEXT")
不幸的是,应用程序也必须在不同的数据库中运行,我还没有被告知哪些只是“根本”。
是否可以制作具有类似效果的东西,但是在大多数数据库中工作?我怎样才能实现它?
答案 0 :(得分:15)
这样的事情:
@Lob
private String someString;
我认为它更便携,应该有效地生成TEXT或LONGTEXT数据类型。
答案 1 :(得分:2)
如果您使用@LOB,您将使用包含DISTINCT(http://ora-00932.ora-code.com/)的SQL的ORA-00932异常
我认为解决方案取决于字符串的字节大小。如果它< 4000字节,您可以尝试使用@Column(name =“...”,length = 4000)
我建议4000字节用于DB兼容性原因:
答案 2 :(得分:0)
我遇到了同样的问题,仅在application.properties上的MySQL Url中添加了一个参数即可解决该问题:
spring.datasource.url=jdbc:mysql://localhost:3306/database?jdbcCompliantTruncation=false
参数为jdbcCompliantTruncation = false
看起来像一个解决方法,但只有它可以解决...
答案 3 :(得分:0)
相似的问题我在将图像上传到mysql数据库 @Column(columnDefinition =“ TEXT”)时遇到错误。
您可以在postgresql和mysql数据库中使用。
我已经更改为
@Lob
@Column(name=imageFiie)
private String image;
注意: 使用PostgresSQL时,我们可能会定期需要存储任意长度的字符串。
为此,PostgreSQL提供了三种字符类型:
这是因为JPA规范使用了SQL标准。因此,它没有定义使用@Text批注来处理此类对象的简单方法。
幸运的是,我们有两种方法可以管理PostgreSQL数据库的TEXT数据类型:
我们可以使用@Lob批注 另外,我们也可以使用@Column批注,结合columnDefinition属性