JPA和PostqreSQL:长字符串持久性

时间:2009-12-09 00:46:26

标签: postgresql jpa

有人能告诉我如何使用JPA(我使用PostgreSQL)来保存长文本吗?

这是我在班级中定义一个非常长的字符串的方式:

@Lob
private String  body;

但是,这会在数据库中生成 charactervarying(255)类型的字段。

此外,我尝试使用@Column注释:

@Column(columnDefinition="TEXT")
private String  body;

但是一切都是徒劳的。

我很感激有关这个问题的评论。

6 个答案:

答案 0 :(得分:18)

@Column(columnDefinition="TEXT")

确实是这样做的方式。也许你必须重新生成你的DDL?

答案 1 :(得分:15)

我今天遇到了同样的情况。 刚

@Lob
private String  body;

应创建一个典型“text”的db列(PostgreSQL - 变量无限长度),但应该重新生成表。

答案 2 :(得分:11)

这是一篇非常古老的帖子,但由于它有很多观点,即使在今天我也有类似的问题,我想这值得一个简单的答案。

我的解决方案类似,但我发现我需要LONGTEXT列代替:

@Column(columnDefinition="LONGTEXT")
private String body;

是的,你必须重新生成它。我正在玩Play!我不得不重启我的应用程序。

答案 3 :(得分:0)

您还可以使用验证注释:

@Size(max=xxx)

当然,这也可以作为验证约束。

答案 4 :(得分:0)

JPA,PostgreSQL 您可以使用:

@Column(length = 2000)
    private String template;

它生成:

template character varying(2000)

答案 5 :(得分:0)

我不知道为什么,但我添加了 @列(长度 = 1024)

在 getter 之上,它可以工作。