我正在使用带有H2 db的默认Hibernate版本的Spring Boot 2(2.0.1.RELEASE),并且我在使用@Embeddable时生成的表中的字段大小存在问题。
这是我的代码:
@Entity
public class Publisher {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@NotBlank
@Size(min=2, max=150)
private String name;
@NotNull
private Address address;
...
}
@Embeddable
public class Address {
@NotBlank
@Size(min=3, max=100)
private String street;
@NotBlank
@Size(min=2, max=100)
private String city;
@NotBlank
@Size(min=2, max=100)
private String county;
@NotBlank
@Size(min=7, max=8)
private String postcode;
...
}
当Spring Boot启动时,它会在H2中创建表。 '名称中的列大小' Publisher中的属性使用@Size注释中的最大值正确设置为150。
忽略嵌入式地址实体的@Size注释中的最大值,并将所有4个字段的最大值设置为255个字符。
这是预期的行为还是应该将嵌入字段中的db列设置为Address实体中@Size注释的最大值?
我知道我可以使用@Column注释的长度值设置它,但我希望在没有额外的@Column注释的情况下使其工作。
很抱歉,如果这是重复的,但在我决定在此处发布我的问题之前,我搜索了几个小时。
谢谢 卡兹
答案 0 :(得分:1)
对于已审核,问题是@Valid
字段缺少Address
注释:
@NotNull
@Valid
private Address address;
如果没有此注释,则不启用级联,并忽略Address
中的约束注释。