Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据Jpa未将实体持久化到mysql_Java_Spring Boot_Spring Data Jpa - Fatal编程技术网

Java Spring数据Jpa未将实体持久化到mysql

Java Spring数据Jpa未将实体持久化到mysql,java,spring-boot,spring-data-jpa,Java,Spring Boot,Spring Data Jpa,Hi编写了一个测试(junit)用例,用于从MYSQL数据库创建用户实体并将其获取到MYSQL数据库。读取功能正在工作,但创建功能不工作。我也没有得到任何错误日志。下面是我的代码: package com.learn.springConfig; //importes @Configuration @EnableTransactionManagement @EnableJpaRepositories(basePackages = "com.learn.persistence.dao") @Com

Hi编写了一个测试(junit)用例,用于从MYSQL数据库创建用户实体并将其获取到MYSQL数据库。读取功能正在工作,但创建功能不工作。我也没有得到任何错误日志。下面是我的代码:

package com.learn.springConfig;
//importes

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "com.learn.persistence.dao")
@ComponentScan("com.learn.persistence")
@PropertySource({ "classpath:persistence-mysql.properties" })
public class PersistenceJpaConfig {

    @Autowired
    Environment env;

    @Bean
    public DataSource dataSource() {
        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
        dataSource.setUrl(env.getProperty("jdbc.url"));
        dataSource.setUsername(env.getProperty("jdbc.username"));
        dataSource.setPassword(env.getProperty("jdbc.password"));
        return dataSource;
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        final LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
        entityManager.setDataSource(dataSource());
        entityManager.setPackagesToScan(new String[] { "com.learn.persistence.model" });
        final JpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
        entityManager.setJpaVendorAdapter(jpaVendorAdapter);
        entityManager.setJpaProperties(additionalProperties());
        return entityManager;

    }

    private Properties additionalProperties() {
        Properties properties = new Properties();
        properties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
        properties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql", "false"));
        properties.setProperty("jpa.generateDdl", env.getProperty("jpa.generateDdl", "true"));
        return properties;
    }

    @Bean
    public JpaTransactionManager transactionManager() {
        final JpaTransactionManager transactionManager = new JpaTransactionManager(entityManagerFactory().getObject());
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

}    
用户实体:

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "USER_ID")
    private Long userId;
    private String email;
    @NotNull
    @Size(max = 255)
    private String name;
    @Nullable
    private boolean locked;
    @NotNull
    @Size(max = 255)
    private String password;
    //setters getters
}    
Jpa用户存储库:

package com.learn.persistence.dao;

public interface UserJpaRepository extends CrudRepository<User, Long>{

}    
package com.learn.persistence.dao;
公共接口UserJpaRepository扩展了crudepository{
}    
单元测试用例:

@ContextConfiguration(classes = {PersistenceJpaConfig.class, ContextConfig.class})
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestJPA {

    @Autowired
    private UserJpaRepository userJpaRepository;

    @Test
    @Transactional
    public void insertUsers() {
        User user1 = new User("puspender@fake.com","puspender", false, "12345");
        System.out.println("saving user");
        assertNotNull(userJpaRepository.save(user1));
    }

    @Test
    @Transactional
    public void findAllUsers() {
        Iterable<User> users = userJpaRepository.findAll();
        for(User user : users) {
            System.out.println(user.getName()+"\t"+ user.isLocked());
        }
    }

}
@ContextConfiguration(class={PersistenceJpaConfig.class,ContextConfig.class})
@RunWith(SpringJUnit4ClassRunner.class)
@春靴测试
公共类TestJPA{
@自动连线
私人用户jparepository用户jparepository;
@试验
@交易的
公共无效插入器(){
用户user1=新用户(“puspender@fake.com“,“puspender”,假,“12345”);
System.out.println(“保存用户”);
assertNotNull(userJpaRepository.save(user1));
}
@试验
@交易的
公共无效findAllUsers(){
Iterable users=userJpaRepository.findAll();
for(用户:用户){
System.out.println(user.getName()+“\t”+user.isLocked());
}
}
}
findAllUsers()
为我带来了所有用户,但是
insertUsers()
没有插入用户。
任何提示,为什么会出现这种行为?

“我没有收到任何错误日志”,所以您的测试通过了?但是您保存的user1没有显示在
findAll()中。


默认情况下,测试是事务性的,在每个测试结束时回滚。
因此,在您的第二个测试中,
findAllUsers
user1不再存在。

是否显示执行此测试的输出或日志?“默认情况下,测试是事务性的,并在每个测试结束时回滚”这回答了我的问题@回滚(false)是这里的解决方案。谢谢