Fala galera
Estou com problemas em efetuar update em uma chave FK utilizando o toplink. No mapeamento do meu pojo, estou utilizando ValueHolderInterface para mapear a tabela filha (FK).
Eu estou fazendo o seguinte:
public CargaVO save(CargaVO cargaVO) {
TbCarga pojoClone = null;
TbCarga pojo = null;
TbCarga pojoAlterado = null;
if (cargaVO.getIdCarga() == null) {
pojo = parseToPojo(cargaVO);
} else {
pojoAlterado = parseToPojo(cargaVO);
pojo = buscarPojoCargaRemarcacao(cargaVO
.getIdCarga());
pojo = (TbCarga) unitOfWork
.mergeClone(pojoAlterado);
atualizarStatus(cargaVO);
}
unitOfWork.assignSequenceNumber(pojo);
pojoClone = (TbCarga) unitOfWork.registerObject(pojo);
return parseToVo(pojoClone);
}
Dessa forma, eu consigo atualizar apenas os valores que estão mapeados diretamente com as colunas e não consigo alterar nenhum valor que não seja mapeado direto ( Ex. Pojo referente a coluna FK ).
Eu preciso fazer alguma coisa a mais? Já tentei utilizar o mergeCloneWithReferences, mas ele me inseriu um novo registro na tabela.
Abs
solução: não estava sendo setado o ID no parseToPojo(Object) e por isso ele pegava um outro ID. Após incluir isso no método, voltei a usar o mergeCloneWithReferences() e o negócio ta bala.
Abs