0

我有两个(非常简单的)实体:父母和孩子。

@Entity
class Child {

@Id
@Column(name = "id", nullable = false, updatable = false, columnDefinition = "BINARY(16)")
private UUID id;

@Column(columnDefinition="varchar(4000)")
private String obs;

@NotNull
@ManyToOne(optional = false)
@JoinColumn(nullable = false, updatable = false)
private Parent parent;

(getters and setters)
}

原始的 obs 字段没有注释,因此 Hibernate 将其创建为 varchar(255),但我需要它能够处理更大的文本。更改后(如上所示),getParent() 方法始终返回 null。

有谁知道为什么会这样?

4

1 回答 1

1

对于您的Column注释,而不是使用columnDefinition设置length元素。这是Javadoc length

(可选)列长度。(仅在使用字符串值列时适用。)

默认:

255

您还可以看到为什么它VARCHAR(255)在您的架构中默认为:默认值为 255。为什么您的columnDefinition不起作用,但是,我不知道(我没有使用它的经验)。

于 2018-06-21T16:18:22.367 回答