Jmix2.0.1 实体继承,父实体列表界面会把子实体的数据也查出来

实体
image

界面
image

效果
image

你好,没看懂,查出什么来了?

效果图里的 222 这条数据本不应该查询出来的,它是OrderProducts数据,而列表查询的是Products的数据,OrderProducts是Products的子类。

你的父实体的 @Inheritance 注解设置的是什么?

看到了,是TABLE_PER_CLASS
首先,根据Eclipselink的文档,子类数据查出来是对的:
image

如果希望不查出子类,可以用 TYPE 函数,例如:

select e from SuperEntity e where TYPE(e) = SuperEntity

但是要注意,Jmix中,TYPE 只能以参数传递。而且我试了下,Eclipselink不支持在 TABLE_PER_CLASS 的情况使用 TYPE。所以,如果想使用 TYPE,需要改成 SINGLE_TABLEJOINED.

或者按照Eclipselink的方法,使用@Customizer,但是这样这个类就只支持查询自己了。

1 个赞

了解,1.5我好像没遇到过这样的问题,我看看