2016-03-25 5 views
0

Я работаю с Spring Data Neo4j 4 и следующие объекта пользователяEntity все еще можно найти после удаления

@NodeEntity 
public class User{ 

    private Long id; 
    private String username; 

    //Getter, Setter 
} 

Использование Neo4j GraphRepository, я сначала создать пользователя в одной транзакции, а затем удалить его во второй транзакции. Работа с автономным сервером Neo4j на localhost: 7474 Я не получаю никакого результата при запуске «MATCH (n) return n», но когда я запускаю метод findOne (Long id) GraphRepository, используя идентификатор пользователя, который я только что удалил, i получить пользователя, я просто удалил возвращенный. Есть ли какое-то поведение, которое я не понимаю?

С уважением Urr4

Edit: Мой класс приложения

@SpringBootApplication(scanBasePackages = {/.../}) 
@EnableNeo4jRepositories(basePackages = {/.../}) 
@EnableTransactionManagement 
public class MyApplication extends Neo4jConfiguration { 

    public static void main(String[] args) { 
    SpringApplication.run(TSApplication.class, args); 
    } 

    @Override 
    @Bean 
    public Neo4jServer neo4jServer() { 
     return new RemoteServer(/.../); 
    } 

    @Override 
    @Bean 
    public SessionFactory getSessionFactory() { 
    return new SessionFactory("/.../); 
    } 

} 
+0

Если вы все еще в той же транзакции она все равно может быть в вашей сессии. Вы настраиваете свой сеанс как действительный для каждого запроса? –

+0

Так что это может быть ваша локальная копия в сеансе, но не в фактической таблице данных. Можете ли вы попробовать с 4.1.RC1, если поведение такое же? –

+0

Можете ли вы поделиться простым тестом для этого? – Luanne

ответ

0

После Michaels комментарий, я гугле немного и добавил следующее в мой контроллер:

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = RuntimeException.class) 

После это сработало - Спасибо всем :)

Смежные вопросы