【发布时间】: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