Spring Hibernate MySQL单向ManyToOne

时间:2018-06-21 15:04:34

标签: 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 = false)
@JoinColumn(nullable = false, updatable = false)
private Parent parent;

(getters and setters)
}

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

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

对于var myArray = [ {id: "one", color: "red"}, {id: "two", color: "blue"}, {id: "three", color: "green"}, {id: "four", color: "black"}, {id: "five", color: "red"}, {id: "six", color: "blue"}, {id: "seven", color: "green"}, {id: "eight", color: "black"} ] // Creates a numeric array containing numbers // starting from 'start' to 'end'. It's zero-indexed! const range = ( start, end ) => { const result = [] for(let i = start; i < end; i++) result.push(i) return result } const output = range ( 0, myArray.length - 2 ) .map( i => range ( i, i + 3 ).map ( j => myArray[j] ) ) console.log ( JSON.stringify ( output ) )注释,而不是使用Column设置length元素。这是columnDefinition的Javadoc:

  

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

     

默认值:

     

255

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