Spring Boot 带有序号参数的JPA存储库查询返回错误的实体布尔值(由MYISAM引擎引起)

gzjq41n4  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(79)

我有一些奇怪的问题与JPA实体(Map到mysql)
布尔属性“recurring”在数据库中实际上是false。但是在下面的本地查询中,它返回true和object。
当我处理旧的存在数据时,它就发生了。事实上,如果我从头开始做所有的数据库,它就不会发生。
也许是因为我在正在进行的开发过程中手动添加了此属性,但我没有找到任何原因应该导致它。

@Query(value = "SELECT DISTINCT e from SocialEvent e " + "join e.multiPropsValuesSet m "
            + "join e.multiPropsValuesSet c " + "join e.multiPropsValuesSet a " + "WHERE ("
            + "(COALESCE(?1, NULL) is null  OR c in ?1 ) " 
            + " AND  (COALESCE(?2, NULL) is null  OR c in ?2 ) "
            + "AND  (COALESCE(?3, NULL) is null  OR a in ?3 ) "
            + ") "
            + "AND (e.date BETWEEN ?4 AND ?5) " + "ORDER BY e.date ASC" 
/*, cause problems regarding the ordinal parameter--> nativeQuery=true*/ 
 )                                                                                                      
        List<SocialEvent> filterNotWorking(List<MultiPropValue> eventTypes, List<MultiPropValue> areas,
                List<MultiPropValue> jewLvlKeep
                , Date from, Date to);

字符串
在findById()这样的命名查询中,它是正确的。
我没有看到任何变化,从拖放版本的现有数据版本在这个领域。
有人知道如何找到解决方案吗?

更新:

在做了更多的调试之后,我发现当将表引擎从MyISAM更改为innoDB时,它解决了。
我看到在更改之前,我也有一些查询,带回了很多重复,尽管查询定义为“distinct”。
1.为什么会这样?
1.我将生产表更改为此引擎是否有风险?
1.我如何防止这种情况在未来再次发生?
100d1x

的字符串

utugiqy6

utugiqy61#

已解决

我已经成功的解决了这个问题,我将简单的解释一下,也许对将来的人有帮助。
首先--解决这些问题的一种方法--当然是尝试从零开始创建数据库,看看这些事情是否也在发生。
我没有看到-所以我开始**比较数据库类型,**并没有看到任何差异,直到我注意到在新生成的数据库中是innoDB,而在旧的数据库中是MyIsam Engine。
请看问题中的图片。

问题是我把我的数据库从mysql 5.7升级到了8。显然,Mysql V8不能很好地与上一个版本创建的MyIsam引擎一起工作。

我假设对于这样的问题,正确的解决方案change all the tables from MyIsam to InnoDB,也是为了验证hibernate方言是否适合8。
取决于您的配置方法(gradle,maven等)。
第一个月
在生产中,它将在这些变化之后进行适当的测试,但这就是生活。

相关问题