13

我的朋友,

我和...上课

@NotBlank(message = "timesheet.cadastro.horainicio.obrigatorio")
@Temporal(TemporalType.TIME)
@Column(name = "INICIO", nullable = false)
private Date horaInicio;

而且,在我的测试(groovy)中,我将 null 放入 "horaInicio" :

def "Salvar um timesheet sem hora inicio"() {
    given:"um timesheet sem data"
        def usuario = sessionFactory.getCurrentSession().get(Usuario.class,1L) as Usuario
        def dias = sessionFactory.getCurrentSession().get(Dias.class,1L) as Dias
        def timeSheet = criarTimeSheet(usuario,dias) as TimeSheet
        timeSheet.horaInicio = null
    when:"buscar na base"
        def timeSheetPersistido = timeSheetService.salvar(timeSheet)
    then:"retorna uma lista de timesheet"
        def erro = thrown(ConstraintViolationException)
        "timesheet.cadastro.horainicio.obrigatorio".equals(erro.getConstraintViolations().asList().get(0).getMessage())
}

但我有错误:

Expected exception javax.validation.ConstraintViolationException, but got javax.validation.UnexpectedTypeException
    at org.spockframework.lang.SpecInternals.thrownImpl(SpecInternals.java:79)
    at br.com.infowhere.service.TimeSheetServiceIt.Salvar um timesheet sem hora inicio(TimeSheetServiceIt.groovy:80)
Caused by: javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.util.Date.

任何人都可以帮助我吗?

谢谢

4

3 回答 3

37

正如文档中所说,@NotBlank用于 String 类型。没有 java.util.Date 为空白的概念。它可以为空或不为空。

验证带注释的字符串不为 null 或为空。NotEmpty 的不同之处在于尾随空格被忽略。

如果目标是检查值是否为 null,则应使用@NotNull 。根据文件:

带注释的元素不能为空。接受任何类型。

于 2013-05-15T02:53:48.513 回答
0
@Temporal(DATE)
@Column(name = "creation_timestamp")
private Date creationTimestamp;

或者

@Temporal(TIMESTAMP)
@Column(name = "creation_timestamp")
private Date creationTimestamp;

如果数据库类型是“日期时间”。

简单而且有效。不需要额外的@annotations。

于 2016-12-16T09:51:31.177 回答
-2

只是删除@Temporal(TemporalType.TIME) 注释;-)

于 2014-02-18T10:18:47.447 回答