2
respostas

@Version com atributo Calendar

Tentei utilizar a annotation @Version em um atributo do tipo Calendar, como dito no curso que é possível.

O problema é que ao fazer isso ao atualizar um produto, o dado não é salvo no banco de dados e a versão corrente do produto fica vazia.

Segue o código fonte da página antes e depois de uma atualização:

Antes:

<input type="hidden" name="versao" value="java.util.GregorianCalendar[time=1525654852000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Sao_Paulo",offset=-10800000,dstSavings=3600000,useDaylight=true,transitions=129,lastRule=java.util.SimpleTimeZone[id=America/Sao_Paulo,offset=-10800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=9,startDay=15,startDayOfWeek=1,startTime=0,startTimeMode=0,endMode=3,endMonth=1,endDay=15,endDayOfWeek=1,endTime=0,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2018,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=126,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=0,SECOND=52,MILLISECOND=0,ZONE_OFFSET=-10800000,DST_OFFSET=0]">

Depois:

<input type="hidden" name="versao" value="">

Também notei que a URL muda de http://localhost:8080/projeto-jpa-2/produto/4/form para http://localhost:8080/projeto-jpa-2/produto.

O principal é que dessa forma não é feita a atualização no banco.

Com Integer funcionou, como fazer funcionar com Calendar?

2 respostas

Acho que o problema é que o valor que ficou ali no input do calendar não era exatamente o que deveria. Ali tem que ficar a data gravada no banco em si e parece que tem o toString do calendar. Você precisa deixar a data, que aí ela vai ser passada corretamente para seu objeto e tudo deve funcionar.

Mas o que deveria fazer então para funcionar?

Formatei com um método getVersaoFormatada para retornar da como String no formato do banco.

Porém ao atualizar o input fica vazio como disse anteriormente. Mas agora tomo NullPointerException ao invés de só recarregar a página.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software