Java Spring Hibernate MySQL单向多通
我有两个(非常简单的)实体:父实体和子实体Java Spring Hibernate MySQL单向多通,java,mysql,hibernate,spring-data-jpa,Java,Mysql,Hibernate,Spring Data Jpa,我有两个(非常简单的)实体:父实体和子实体 @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
@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
有人知道为什么会发生这种情况吗?对于
列
注释,而不是使用列定义
设置元素。以下是长度为的Javadoc:
(可选)列长度。(仅当使用字符串值列时适用。)
默认值:
255
您还可以看到为什么在您的模式中它默认为VARCHAR(255)
:默认值为255。但是,我不知道为什么你的列定义不起作用(我没有这方面的经验)。你好,@Slaw。我做了更改,但问题仍然存在。我检查了hibernate日志中的查询,它们都正常。hibernate代理和/或spring数据jpa存储库似乎存在一些问题:事实上,从一定大小的文本开始,问题就开始了。我不认为自己是JPA/Hibernate/SQL的专家,所以我不确定我能不能帮助你。你有没有休眠重建模式?还是使用旧生成的模式?是的,也没有。我删除了表,Hibernate再次创建了COR。直接。即使我复制查询并在mysql客户端上通过它,它也会得到正确的处理。我相信问题发生在JPA或Spring层。实际上,只有当长度为1537或更高时才会发生错误。