我有两个(非常简单)实体:父实体和子实体。
@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。
有人知道为什么会发生这种情况吗?
最佳答案
对于您的Column
注释,而不是使用columnDefinition
设置length
元素。这是 length
的 Javadoc:
(Optional) The column length. (Applies only if a string-valued column is used.)
Default:
255
您还可以了解为什么它在架构中默认为 VARCHAR(255)
:默认值为 255。但是,为什么您的 columnDefinition
不起作用不知道(我没有这方面的经验)。
关于java - Spring Hibernate MySQL 单向 ManyToOne,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50971806/