Не ответ. Испытываю такое же поведение. Попросите автора определить, соответствует ли следующий код заявлению о проблеме.
Классы сущностей и составного идентификатора.
@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.12
, H2:1.4.196
). Тест не пройден.