【问题标题】:Spring Hibernate/JPA Postgres: value too long for type character varying(255)Spring Hibernate/JPA Postgres:类型字符变化的值太长(255)
【发布时间】:2019-10-01 20:21:37
【问题描述】:

我正在尝试从 Spring Boot、Hibernate/JPA 设置关系,但在尝试了一整天和今天早上之后,它没有奏效。我收到了几个错误,但现在错误仅限于:

org.postgresql.util.PSQLException: ERROR: value too long for type character varying(255)

以下是我的 POJO:

@Entity
public class ParentEvent implements Serializable {

    @Id
    @GeneratedValue
    private long _id;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "parentEvent")
    private List<ChildEvent> childEvent;

    // other getters and setters
}

@Entity
public class ChildEvent implements Serializable {

    @Id
    @GeneratedValue
    private long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="parentEvent__id")
    private ParentEvent parentEvent;

    // other getters and setters ..
}

我有以下 json 结构:

parentEvent: {
    childEvent: [
        {
            param1: "value",
            param2: "value",
        },
        {
            param1: "value",
            param2: "value",
        },
    ]
}

我浏览了几个 stackoverflow 帖子和教程,上面的结构看起来不错,但我无法让它工作。

我做错了什么?

【问题讨论】:

  • 实体类中的param1/2是什么?请出示代码
  • 我做错了什么?您正在尝试将超过 255 个字符的字符串存储到只能包含 255 个字符的数据库列中。您发布的任何内容都无法让我们比这更精确。
  • @JBNizet 是正确的,我将文本/描述列设置为“@Column(length=10485760)”并解决了问题。
  • 它正在工作,但是,在“child_event”表中,“parent_event”的“_id”没有填充。如何使 ParentEvent._id 填充到 ChildEvent.parentEvent__id 列中?
  • 这个问题已经被问了一千次了。 parentEvent__id 列映射到 ChildEvent.parentEvent 属性。因此,如果 ChildEvent.parentEvent 为 null,则列值也将为 null。推论:如果要在列中输入非空值,则需要将 ChildEvent.parentEvent 设置为非空值。

标签: postgresql hibernate spring-boot jpa


【解决方案1】:

如果你使用 PostgreSQL,你可以使用以下注解:

@Column(columnDefinition="TEXT")

但这不适用于其他数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2021-06-22
    • 1970-01-01
    • 2012-03-23
    • 2021-10-20
    • 2016-07-26
    • 2014-03-10
    相关资源
    最近更新 更多