Кэш измерений mondrian не сбрасывается

Я пытаюсь очистить кеш измерений mondrian, используя следующий код:

     org.olap4j.metadata.Schema OlapSchema = olapConnection.getOlapSchema();
     NamedList<org.olap4j.metadata.Cube> cubeList =  OlapSchema.getCubes();
     org.olap4j.metadata.Member m = null;
     for(org.olap4j.metadata.Cube cube: cubeList) {
    m = cube.lookupMember(IdentifierNode.parseIdentifier( "[Time].[2013].[Jul2013]").getSegmentList());
       final CacheControl cacheControl = olapConnection.getCacheControl(null);
       CacheControl.MemberSet regionTime = cacheControl.createMemberSet(mondrian.olap.Member)m, false);
       cacheControl.flush(regionTime);

     }

Но этот код выдает ошибку времени выполнения «MondrianOlap4jMember и mondrian.olap.member несовместимы».


person DrunkMonkey    schedule 31.07.2013    source источник


Ответы (1)


Похоже, вам нужно сделать следующее, чтобы очистить кеш: развернуть объект-член, возвращенный функцией lookupMember, используя Класс-оболочка Olap вот так -

m = cube.lookupMember(IdentifierNode.parseIdentifier("[Time].[2013].[Jul2013]").getSegmentList()); Обертка OlapWrapper = (OlapWrapper)m; mondrian.olap.Member MondrianMember = wrapper.unwrap(mondrian.olap.Member.class);

А теперь вызовите метод флеша -

cacheControl.flush(MondrianMember);

person DrunkMonkey    schedule 05.08.2013