@Configuration
@EnableWebMvc
@ComponentScan({"eu.bm"})
@EnableNeo4jRepositories("eu.bm.repository")
@EnableTransactionManagement
public class bmConfiguration extends WebMvcConfigurerAdapter {
@Bean
public OpenSessionInViewInterceptor openSessionInViewInterceptor() {
OpenSessionInViewInterceptor openSessionInViewInterceptor =
new OpenSessionInViewInterceptor();
openSessionInViewInterceptor.setSessionFactory(sessionFactory());
return openSessionInViewInterceptor;
}
public void addInterceptors(InterceptorRegistry registry) {
registry.addWebRequestInterceptor(openSessionInViewInterceptor());
}
@Bean
public static SessionFactory sessionFactory() {
return new SessionFactory("eu.bm.domain");
}
@Bean
public Neo4jTransactionManager transactionManager() throws Exception {
return new Neo4jTransactionManager(sessionFactory());
}
@Repository
public interface UserRepository extends GraphRepository<User>{
@Query("MATCH (user:User) where user.name={0} return user ")
User findUser(String username);
@Query("MATCH (user:User) where user.name={0} delete user ")
User deleteUser(String username);
@Query("match (user:User) delete user")
User deleteAllUsers();
}
@Component
public interface UserManagementService {
List<User> listAll();
User save(User user);
User findUser(String username);
}
@Service
@Transactional
public class UserManagementServiceImpl implements UserManagementService {
private UserRepository userRepository;
@Autowired
public UserManagementServiceImpl(UserRepository userRepository) {this.userRepository = userRepository;}
@Override
public List<User> listAll() {
List<User> users = new ArrayList<>();
userRepository.findAll().forEach(users::add);
return users;
}
@Override
public User save(User user) {
userRepository.save(user);
return user;
}
@Override
public User findUser(String username) {
return userRepository.findUser(username);
}
然后执行一个简单的写-读测试,如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class DatabaseConnectionTest {
// User 1
private static final String UNAME1 = "Paul";
private static final String EMAIL1 = "paul@user.com";
private static final String PASSWORD1 = "p@ss";
private static final String USERNAME1 = "paul";
@Autowired
private UserRepository userRepository;
@Before
public void setUp() throws Exception {
// Clear database before adding new user
userRepository.deleteAllUsers();
// Creating user
User user = new User(UNAME1, USERNAME1, PASSWORD1, EMAIL1);
userRepository.save(user);
}
@Test
public void testPersistence() {
Assert.assertEquals(UNAME1, userRepository.findUser(UNAME1).getName());
Assert.assertEquals(USERNAME1, userRepository.findUser(UNAME1).getUsername());
}
上面的结果就是这个错误:
2017-08-16 14:59:38.990信息6496---[main]E.B.repository.DatabaseConnectionTest:7.131秒内启动DatabaseConnectionTest(JVM运行于8.331)2017-08-16 14:59:39.872信息6496---[main]o.n.o.drivers.http.request.httprequest:Thread:1,URL:http://localhost:7474/db/data/transaction/39,请求:{“语句”:[{“语句”:“Unwind{rows}as row CREATE(n:user f,ID(n)为ID,row.type为type”,“parameters”:{“rows”:[{“noderef”:-1821370276,“type”:“node”,“props”:{“password”:“p@ss”,“name”:“paul”,“email”:“paul@user.com”,“username”:“paul”}}]},“resultdatacontents”:[“row”],“includestats”:false}]}2017-08-16 14:59:40.358错误6496---[main]
- 为什么userrepository.save(user)在数据库中创建记录但抛出异常?
- “此线程的事务不是当前的”是什么意思?
- 为什么userrepository.save(user)最终失败,但userrepository.deleteallusers()工作?
编辑:我的受抚养人。Gradle包括以下内容:
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-neo4j', version: '1.5.6.RELEASE'
//compile group: 'org.springframework.data', name: 'spring-data-neo4j', version: '4.2.6.RELEASE'
compile group: 'org.neo4j', name: 'neo4j-ogm-core', version: '2.1.3'
//compile group: 'org.neo4j', name: 'neo4j-ogm-bolt-driver', version: '2.1.3'
runtime group: 'org.neo4j', name: 'neo4j-ogm-http-driver', version: '2.1.3'
compile('org.springframework.boot:spring-boot-starter-security')
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
compile('org.springframework.boot:spring-boot-starter-web')
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '1.5.4.RELEASE'
testCompile('org.springframework.boot:spring-boot-starter-test')
您的SessionFactory
bean不应声明为static
:
@Bean
public static SessionFactory sessionFactory() {
return new SessionFactory("eu.bm.domain");
}
应该是
@Bean
public SessionFactory sessionFactory() {
return new SessionFactory("eu.bm.domain");
}
背景
在Ignite缓存中的事务性方法中,我们使用多线程方法。
尝试使用executeUpdate()插入/update/delete时引发异常。Select query工作得很好。我已经尝试了以前在Stack-Overflow中提到的类似错误的所有建议。感谢任何指导。 环境:Websphere Liberty:17.0.0.2、Eclipselink 2.6.4、JPA 2.1 在Liberty server上启用的功能 [审核]CWWKF0012I:服务器
此错误发生在,当方法运行时。 向添加注释不能解决问题-https://stackoverflow.com/a/32552558/3536552 你知道怎么修吗?
我有一个带有异步endpoint的quarkus应用程序,它创建一个具有默认属性的实体,在request方法中启动一个新线程,并执行一个长期运行的作业,然后返回该实体作为响应供客户端跟踪。 此外,长时间运行的作业将在实体运行时对其进行更新,因此它也必须是事务性的。但是,数据库实体没有得到更新。 这些是我面临的问题: 收到以下警告: 我尝试使用但没有用。 我尝试在上使用API方法,而不是在指南中提到
问题内容: 我从xml-转换为Java-Config的Spring4 / Hibernate4项目遇到以下异常。 该项目在Eclipse中启动了属性并且没有错误,但是在第一个请求出现Exception时。在我-class我已经配置为,,,。 我所有的服务都标有。 知道这可能来自哪里吗? 编辑1 根据要求,这里是堆栈跟踪: 编辑2 奇怪的是,我从另一个项目中完美地借用了整个Java-Config代码
我将一个Spring4/Hibernate4项目从xml-config转换为Java-config时遇到以下异常。 项目在Eclipse中启动upproperty和errorfree,但在第一个请求时出现异常。在我的类中,我为、、、配置了。 我的所有服务都用注释。 知道这是从哪来的吗? 编辑%1 根据要求,这里的StackTrace: 编辑2 奇怪的是,我从另一个工作完美无缺的项目中借用了整个Ja