gpt4 book ai didi

hibernate validator : EmbeddedId constraint ignored by hbm2ddl

转载 作者:行者123 更新时间:2023-12-03 15:02:54 26 4
gpt4 key购买 nike

这里的问题很具体,但现在已经困扰了我一天:
我在PostgreSQL 8.3上使用了Hibernate Core,Annotations&Validator。

我有以下类(class)设置:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Entry {
@EmbeddedId
protected EntryPK entryPK;
@ManyToMany
private Set<Comment> comments = new HashSet<Comment>();
...

@Embeddable
public class EntryPK implements Serializable {
@ManyToOne(cascade = CascadeType.ALL)
private Database database;

@Length(max = 50)
@NotEmpty
private String pdbid;
...

我想在我的PostgreSQL数据库中看到将“长度”约束转换为一个长度约束(它适用于@Entity而不是@Embeddable的其他字段),但它似乎并不想工作。
即使使用@IdClass代替@EmbeddedId并在@Entity中的匹配字段上应用Length约束也不能解决此问题:数据库字段仍为varchar 255(对于我的需求来说大约250大)。
有人可能会说我不应该在意此级别的详细信息,但是我的OCD一方拒绝放任其走。.;)是否不可能在EmbeddedId内使用Hibernate Validator Annotations并让hbm2ddl将约束应用于数据库领域?

最佳答案

没有答案。经历相同的行为。请求作者识别以下代码是否与问题说明对齐:实体和Composite-id类。

@Embeddable
public class MyComposite implements Serializable {
private static final long serialVersionUID = 5498013571598565048L;

@Min(0)
@Max(99999999)
@Column(columnDefinition = "INT(8) NOT NULL", name = "id", nullable = false)
private Integer id;

@NotBlank
@NotEmpty
@Column(columnDefinition = "VARCHAR(8) NOT NULL", name = "code", length = 8, nullable = false)
private String code;
// plus getters & setters.
}

@Entity
@Table(name = "some_entity_table")
public class MyEntity {
@EmbeddedId
private MyComposite composite;

public MyComposite getComposite() {
return composite;
}

public void setComposite(MyComposite composite) {
this.composite = composite;
}
}

类的单元测试
@Test
public void createWithIdOutOfRangeTest(){
Exception exception = null;
MyEntity input = new MyEntity();
MyEntity output = null;
MyComposite id = new MyComposite();
// EITHER THIS
id.setId(123456789);
id.setCode("ABCDEFG");
// OR THIS
id.setId(12345678);
id.setCode(" ");
input.setComposite(id);
try {
output = service.create(input);
} catch (Exception e) {
exception = e;
}
Assert.assertNotNull("No exception inserting invalid id !!", exception);
Assert.assertTrue("There was some other exception !!", exception instanceof ConstraintViolationException);
}

正如问题中所述,我没有收到任何将无效值传递给复合键字段( Hibernate-core:5.0.12H2:1.4.196)的异常。测试失败。

关于 hibernate validator : EmbeddedId constraint ignored by hbm2ddl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/713268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com