gpt4 book ai didi

java - 具有级联 VersionLockingPolicy 的父对象不会获取对私有(private)子对象的数据库更改

转载 作者:行者123 更新时间:2023-12-01 16:09:30 26 4
gpt4 key购买 nike

我有一个父对象,其版本锁定策略定义如下:

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

并且子级映射如下:

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);

当我更改子项上的字段并直接在数据库上更新子项 cacheId 时,eclipselink 查询不会获取更改。当我更新父对象的 cacheId 时,eclipselink 查询会将更改返回到子字段。

我认为级联版本锁定策略应该会在其任何私有(private)子对象更新(由其版本字段定义)时导致父对象更新。我是不是错了,或者我的代码中其他地方可能有问题?

最佳答案

只需在父实体类上使用以下内容:

@OptimisticLocking(cascade = true)

并用@PrivateOwned标记@OneToMany

这仅在您使用版本列时才有效。请检查:

http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG)#Using_EclipseLink_JPA_Extensions_for_Optimistic_Locking

关于java - 具有级联 VersionLockingPolicy 的父对象不会获取对私有(private)子对象的数据库更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1764320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com