jpql查询错误 :The abstract schema type 'osrep_OsReportConfig' is unknown

image
创建了一个子项目,运行测试类的时候就开始这个错了

osrep_OsReportConfig 这个类的定义方便发一下吗?

image

Jmix 版本是?

1.2.1

经过我的测试,感觉是子模块再依赖子模块,就会出现这个问题,image

所以,你的意思是开发两个 add-on A 和 B,其中 B 依赖 A,然后在 B 中写测试代码会出现这个问题?这个出错的实体是在 A 还是 B 内?

出现在B内,

你好,我这边试了下,没有重现你的问题,我的步骤:

  1. 分别创建 Addon A 和 Addon B
  2. 在 A 内创建实体 TestEntityInA
  3. 在 A 内增加一个 changelog 文件,创建 TestEntityInA 实体的数据库表
  4. 将 A 安装到 maven local
  5. 在 B 内引入 A,写测试用例如下:
	@Test
	void dataLoadForAddonATest(){
		List<TestEntityInA> entityList = dataManager.load(TestEntityInA.class)
				.query("select e from adda_TestEntityInA e")
				.list();
		assertEquals(entityList.size(),0);
	}
  1. 执行这个测试用例,运行成功。

附件分别是 A 和 B 的项目:
AddonA.zip (2.8 KB) AddonB.zip (2.8 KB)

您好,我这边说下我的步骤:
1、jmix建一个复合项目
2、添加一个子模块
3、子模块新建一个实体NEWENTITY并生成 changelog
4、运行测试类正常 测试类如下
image
5、子模块添加定时任务模块 如图
image
6、运行测试任务 失败
下面是我完整的测试项目
osmain.zip (415.0 KB)

你好,感谢提供示例项目!

错误原因应该是你发现的那个问题,项目启动时只用了 quartz 的 persistence.xml, 没有用 add-on 里面的,导致找不到实体定义。已经在英文论坛提了 issue

issue 有了解答:
可以在测试的配置类中添加 QuartzConfiguration 的依赖:

@JmixModule(id = "com.company.testa.test", dependsOn = {..., QuartzConfiguration.class})
public class TestaTestConfiguration {
    ...

一般来讲,在 add-on 中,如果你新增了 add-on 作为依赖,那么必须在测试配置类的 @JmixModule 中添加新增 add-on 的配置类作为依赖。

但是 @SpringBootApplication 不需要,因为它会自动依赖 classpath 中的所有 add-on

除了测试类,子项目的配置类,应该也要指定模块依赖关系的:类似这样
@JmixModule(dependsOn = {EclipselinkConfiguration.class, UiConfiguration.class, OstimeConfiguration.class, QuartzConfiguration.class, CommonConfiguration.class})
public class TestaConfiguration {