blinkfox / fenix

This is an extension library to the Spring Data JPA complex or dynamic SQL query. 这是一个比 MyBatis 更加强大的 Spring Data JPA 扩展库,为解决复杂动态 JPQL (或 SQL) 而生。https://blinkfox.github.io/fenix
https://blinkfox.github.io/fenix
Apache License 2.0
346 stars 72 forks source link

存在2个致命问题 #56

Closed yuxicun closed 2 years ago

yuxicun commented 2 years ago

1.数据库为下划线的,vo类为驼峰的无法转换 临时解决办法:重写了如下类: package com.blinkfox.fenix.jpa;

import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.StrUtil; import org.hibernate.transform.ResultTransformer;

import java.util.HashMap; import java.util.List; import java.util.Map;

/**

}

2.当项目中引入

org.springframework.boot spring-boot-devtools true runtime

会出现同一个类无法转换成同一个类问题,这个问题很奇怪,单调用jpa内部相关不会报错,暂时没法解决

希望作者下一版本中支持,去除字段使用as 并且下划线能转小驼峰

pengten commented 2 years ago

如果不用devtools是不是没问题

blinkfox commented 2 years ago

@yuxicun 你说的这些问题,文档中都写了的。

  1. 使用 Fenix 自动转换 VO 的功能,需要 SQL 或者 JPQL 中对字段人为加 AS 别名的,Fenix 不会去随意对字段进行修改和转换的。因为,每个公司数据库的字段写法和规范不一样,甚至很多字段都是有自己的特有前缀的,比如:c_xxx, n_xx, dt_xxx等,而这些前缀不会出现在实体类中。所以,这个功能不会进行字段转换,就直接使用实际数据库返回的字段值,如果进行转换可能会导致兼容性或未知问题。不过,后续版本,可能增加和配置自定义转换机制的注解配置,方便不愿意写 as 的情况。
  2. spring-boot-devtools 的热加载机制,导致 JPA, MyBatis 等框架都会出现类似的异常未知问题,一般都不用这个的。
yuxicun commented 2 years ago

好的,谢谢

saddit commented 2 years ago

转换的时候难道不能用@Column确定字段名吗

blinkfox commented 2 years ago
  1. 自定义 Bean 没有 @Column 字段;
  2. 很多查询结果的 SQL 字段不是来自于实体 Bean 的字段;
blinkfox commented 2 years ago

新版本 v2.7.0 已发布,将关闭此 issue

新版本变更记录如下: