Pai com VersionLockingPolicy em cascata não pegando alterações no banco de dados em objetos infantis de propriedade privada

StackOverflow https://stackoverflow.com/questions/1764320

  •  21-09-2019
  •  | 
  •  

Pergunta

Eu tenho um objeto pai com uma política de bloqueio de versão definida da seguinte forma:

VersionLockingPolicy lockingPolicy = new VersionLockingPolicy();
lockingPolicy.setIsCascaded(true);
lockingPolicy.setWriteLockFieldName("CacheId");
descriptor.setOptimisticLockingPolicy(lockingPolicy);

E com uma criança mapeada da seguinte maneira:

OneToManyMapping childMapping = new OneToManyMapping();
childMapping.setAttributeName("children");
childMapping.setReferenceClass(Child.class);
childMapping.dontUseIndirection();
childMapping.privateOwnedRelationship();
childMapping.useBatchReading();
childMapping.useCollectionClass(ArrayList.class);
childMapping.addTargetForeignKeyFieldName("Child.ParentId", "Parent.Id");
descriptor.addMapping(childMapping);

Quando troco um campo na criança e atualizo o cacheID filho diretamente no banco de dados, as consultas Eclipselink não atendem a alteração. Quando atualizo o cacheid do objeto pai, as consultas Eclipselink retornam a alteração para o campo filho.

Eu pensei que a política de bloqueio de versão em cascata deveria fazer com que os pais atualizassem quando algum de seus objetos infantis de propriedade privada foi atualizada (conforme definido por seus campos de versão). Eu estava errado sobre isso, ou provavelmente há algo errado em outro lugar no meu código?

Foi útil?

Solução 2

Eu estava errado. Não há nada no código Eclipselink que fará o que eu queria.

Acho que vou simplesmente adicionar um gatilho aos objetos filhos para atualizar o cacheid pai.

Outras dicas

Basta usar o seguinte na classe de entidade pai:

@OptimisticLocking(cascade = true)

e Mark @onetomany com @privateowned

Isso funciona apenas se você usar a coluna da versão. Por favor, verifique:

http://wiki.eclipse.org/using_eclipselink_jpa_extensions_(elug)#using_eclipselink_jpa_extensions_for_optimistic_locking

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top