Java OneToOne和OneToMany关系实体未在spring引导单元测试中加载
我有一个SpringBoot项目,它是使用jhipster生成的。由于某些原因,在运行单元/集成测试时,hibernate没有加载Java OneToOne和OneToMany关系实体未在spring引导单元测试中加载,java,spring,spring-boot,hibernate,jhipster,Java,Spring,Spring Boot,Hibernate,Jhipster,我有一个SpringBoot项目,它是使用jhipster生成的。由于某些原因,在运行单元/集成测试时,hibernate没有加载@OneToOne和@OneToMany注释字段。无论何时调用带注释的字段getter方法,它都会为@OneToOne返回null,为@OneToMany返回空列表/集 该测试被配置为使用JUnit进行单元测试,使用Spring测试上下文框架进行集成测试,使用内存H2进行数据库测试。下面显示了测试数据库和实体定义的配置 测试配置: application.yml 尤
@OneToOne
和@OneToMany
注释字段。无论何时调用带注释的字段getter方法,它都会为@OneToOne
返回null,为@OneToMany
返回空列表/集
该测试被配置为使用JUnit进行单元测试,使用Spring测试上下文框架进行集成测试,使用内存H2进行数据库测试。下面显示了测试数据库和实体定义的配置
测试配置:
application.yml
尤里卡:
客户:
已启用:false
实例:
appname:${appname}
instanceId:${INSTANCE_ID}
春天:
简介:
活动:测试
应用程序:
姓名:TestApp
隐藏物:
类型:简单
数据源:
类型:com.zaxxer.hikari.HikariDataSource
url:jdbc:h2:mem:testapp;DB_CLOSE_DELAY=-1;DB\u关闭\u打开\u退出=错误
姓名:
用户名:
密码:
希卡里:
自动提交:false
jpa:
数据库平台:io.github.jhipster.domain.util.FixedH2
数据库:H2
在视图中打开:false
显示sql:false
冬眠:
ddl自动:无
命名:
物理策略:org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
隐式策略:org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
特性:
hibernate.id.new_生成器_映射:true
hibernate.connection.provider\u禁用自动提交:true
hibernate.cache.use_第二级_缓存:false
hibernate.cache.use\u query\u cache:false
hibernate.generate_statistics:true
hibernate.hbm2ddl.auto:验证
hibernate.jdbc.time\u区域:UTC
液化:
上下文:测试
邮寄:
主机:本地主机
信息:
基本名称:i18n/messages
mvc:
法维康:
已启用:false
百里香:
模式:HTML
服务器:
港口:10344
地址:本地主机
我定义了以下实体
@实体
@表(name=“db\u用户”)
@缓存(用法=缓存并发策略。非严格读写)
类用户实现可序列化{
@OneTONE(mappedBy=“user”,fetch=LAZY,cascade=CascadeType.REMOVE)
@杰索尼奥雷
私人雇员;
...
}
@实体
@表(name=“employee”)
@缓存(用法=缓存并发策略。非严格读写)
公共类Employee实现了可序列化{
@OneToOne@JoinColumn(unique=true)
私人用户;
@manytone(fetch=FetchType.LAZY)
私营公司;
...
}
@实体
@表(name=“公司”)
@缓存(用法=缓存并发策略。非严格读写)
公共类公司实现可序列化{
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy=“shareFileItem”)
私人雇员;
...
}
当在dev或prod环境中运行应用程序时,这可以正常工作
@服务
@交易的
类示例服务{
公共void testMethod(){
//获取公司员工的列表
Company Company=companyReposity.findById(…);
company.getEmployees();//这将在dev/prod中正确返回员工列表
//但是测试中的一个空集。
//正在从用户实体获取employee对象。
User=userRepository.findById(…);
user.getEmployee();//在prod/dev中返回employee对象,但在test中返回null
}
}
我尝试在测试配置中镜像我的prod/dev配置文件,反之亦然,结果是一样的。我相信我在我的配置中遗漏了一些东西,但我不是这个样子
注意:DEV数据库是H2磁盘,PROD数据库是MYSQL