Closed yuxicun closed 2 years ago
如果不用devtools是不是没问题
@yuxicun 你说的这些问题,文档中都写了的。
SQL
或者 JPQL
中对字段人为加 AS
别名的,Fenix 不会去随意对字段进行修改和转换的。因为,每个公司数据库的字段写法和规范不一样,甚至很多字段都是有自己的特有前缀的,比如:c_xxx
, n_xx
, dt_xxx
等,而这些前缀不会出现在实体类中。所以,这个功能不会进行字段转换,就直接使用实际数据库返回的字段值,如果进行转换可能会导致兼容性或未知问题。不过,后续版本,可能增加和配置自定义转换机制的注解配置,方便不愿意写 as
的情况。spring-boot-devtools
的热加载机制,导致 JPA
, MyBatis
等框架都会出现类似的异常未知问题,一般都不用这个的。好的,谢谢
转换的时候难道不能用@Column
确定字段名吗
@Column
字段;新版本 v2.7.0
已发布,将关闭此 issue
。
新版本变更记录如下:
@QueryFenix
注解中的 resultType
的结果实体类型属性,跟 XML 中的 resultType
同义,后续推荐使用注解标注结果类型,重构代码时,能更好的利用上的 Java 的静态编译检查。NanoId
的主键生成策略和 Java API 调用方式;IDEA
插件地址和其他贡献者的列表;
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;
/**
@author SCY */ public class FenixResultTransformer implements ResultTransformer {
private final Class resultClass;
public FenixResultTransformer(Class resultClass) {
this.resultClass = resultClass;
}
@Override public Object transformTuple(Object[] tuple, String[] aliases) { Map<String, Object> map = new HashMap<>(tuple.length); for (int i = 0; i < tuple.length; ++i) { String alias = aliases[i]; if (alias != null) { map.put(StrUtil.toCamelCase(alias), tuple[i]); } } return BeanUtil.toBean(map, resultClass); }
@Override public List<?> transformList(List list) { return list; }
}
2.当项目中引入
会出现同一个类无法转换成同一个类问题,这个问题很奇怪,单调用jpa内部相关不会报错,暂时没法解决
希望作者下一版本中支持,去除字段使用as 并且下划线能转小驼峰