Pessoal to com um problema estranho que comecou a acontecer da versão 3.0.2 pra 3.1…
Antigamente pra popular a list o hibernate não dava uma exception do tipo :
A collection with cascade=“all-delete-orphan” was no longer referenced by the owning entity instance
Fiz algumas pesquisas no assunto e vi gambiarra de tudo que é modo…ai acabei achando um post em que o cara apenas citava a seguinte linha pra arrumar o problema…
//Fiz isso no controller e realmente funcionou …só que isso ta me parecendo estranho…o framework não deveria colocar um emptyList em vez de null ??
//A linha que resolvia o problema pra ele e resolveu pra mim tambem...
if(pai.getFilhos()==null) pai.setFilhos(Collections.EMPTY_LIST);
O estranho é que nunca precisei dessa linha na versão anterior…
vo postar o trecho pra ver se alguem da uma luz…num tava afim de ficar fazendo esse tipo de tratamento sem essa necessidade…
Quando o vraptor faz a população de dados …ele coloca null caso não tenha encontrado nada??
Porque com null o hibernate reclama,com Collections.emptyList(); ele tambem reclama que é a chamada estática mas com
Collections.EMPTY_LIST (que nem é typesafe) ele aceita numa boa e roda certinho
inclusive fazendo o delete dos orfãos corretamente …muito estranho…
@Post
public void adiciona(Exame exame) {
//Se eu retiro essa linha ele me da a exception se adiciono ai ele faz tudo corretamente
//Aqui o vraptor não deveria usar Collections.EMPTY_LIST ao inves de null??
if(exame.getMascaramentos()==null) exame.setMascaramentos(Collections.EMPTY_LIST);
if(exame.getId()==null)
{
result.include("insert", true);
exameDao.adiciona(exame);
}
else
{
result.include("insert", false);
exameDao.atualiza(exame);
}
result.use(Results.logic()).redirectTo(ExameController.class).mensagem();
}
Bom se precisarem do código completo coloca as classes aqui.