获取查询仅适用于同一事务中的Id列

时间:2016-07-07 19:25:04

标签: transactions spring-data spring-data-gemfire

考虑一个具有3个属性{id,name,age}的Person id形成为名称||年龄。 获取查询仅由Id(在创建记录的同一事务中)

起作用
 @Transactional
public void test(String id,String id2 ) {
 personService.save(new Person("abc","123"));
 Person person = repository.findByNameAndAge("abc", "23"); //doesn't work in same transaction
    //however find by Id column works in same transaction works
    repository.findOne("abc||23") 
    }

来自另一个交易电话 repository.findByNameAndAge("abc", "23")返回结果,但在创建该记录的同一事务中,它不会返回任何结果。

这里的存储库是

 public interface PersonRepository extends GemfireRepository<RecordRevision, String> {
           List<Person> findByNameAndAge(String name, String age);

区域是REPLICATE_PERSISTENT,我正在使用PDX序列化 该调用甚至可以在同一个事务中工作,这是否是任何已知问题?

1 个答案:

答案 0 :(得分:0)

这是GemFire [[1]]中的已知限制。查询引擎未看到事务状态。按id查找转换为GemFire region.get(),它可以看到事务状态。

[1] http://gemfire.docs.pivotal.io/docs-gemfire/latest/developing/transactions/working_with_transactions.html#concept_ty1_vnt_vk