- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个实体,我使用 ColumnTransformer
来绑定(bind)和提取值:
@Entity
class BPoint {
@Id
private Integer id;
@ColumnTransformer(read = "astext(shape)", write = "toshape(?)")
private Shape shape;
}
还有道:
class BPointDao {
@Autowired
private EntityManager em;
@Override
public Page<BPoint> findAll(Pageable pageable) {
Query q = em.createQuery("from BPoint");
List<BPoint> r = q.getResultList();
int total = em.createQuery("select count(*) from BPoint").getFirstResult();
return new PageImpl(r, pageable, total);
}
@Override
public Integer save(BPoint hbds) {
em.persist(hbds);
return hbds.getId();
}
}
它有效,但是一旦我必须做一些需要使用 sql 函数的查询,我遇到了一些问题,以这个有效的 native sql 为例:
select * from BPoint h where inside(h.shape, 100) = 1;
首先我尝试像这样使用 hql:
Query q = em.createNativeQuery("select astext(shape) from BPoint h where inside(h.shape, ?) = 1");
但是我发现生成的sql包含类似
的东西......里面(astext(h.shape),100)......
似乎 ColumnTransformer read
值在 sql 函数 inside
中使用,这不是预期的。
所以我尝试像这样使用 native sql 查询:
Query q = em.createNativeQuery("select * from BPoint h where inside(h.shape, ? = 1");
无法执行sql,但无法正确映射结果。
然后我必须像这样手动添加select fileds
:
Query q = em.createNativeQuery("select id,astext(shape) from BPoint h where inside(h.shape, ? = 1");
但是如果我的实体有很多文件说它超过 20 个怎么办?如果某些列的名称更改了怎么办?
是否有其他方法可以满足我的要求?
最佳答案
首先尝试为您的原生查询提供返回类型:
Query q = em.createNativeQuery("select * from BPoint h where inside(h.shape, ? = 1", BPoint.clss);
List<BPoint> result = q.getResultList();
或者你可以尝试这样做:
Session session = em.unwrap(Session.class);
List<BPoint> points = (List<BPoint>) session.createSQLQuery("SELECT {h.*} FROM BPoint {h} WHERE inside({h}.shape, ? = 1")
.addEntity("h", BPoint.class)
.list();
Hibernate 特定的 API 允许您将 native 查询结果映射到实体。
关于java - hibernate 中的 ColumnTransformer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28738830/
我想用sklearn.compose.ColumnTransformer始终如一(不是并行的,因此,第二个转换器应该只在第一个转换器之后执行)以这种方式交叉列列表: log_transformer =
使用 scikit-learn ColumnTransformer 对 DataFrame 应用转换时,我收到 SettingWithCopyWarning,但我不确定这是为什么。 这是我的代码。 i
我将读取 csv、训练模型和预测请求数据的以下函数放在一起。 我有以下 ValueError:使用剩余关键字时,列顺序必须相等才能适合和转换 训练数据和用于预测的数据具有完全相同的列数,例如 15。我
我正在尝试制作一个处理数字、分类和文本变量的管道。我希望在运行分类器之前将数据输出到新的数据帧。我收到以下错误 ValueError: all the input array dimensions f
我想了解如何在管道中应用逆变换,而不是使用 StandardScaler直接发挥作用。 我正在使用的代码如下: import pandas as pd import numpy as np from
这是我的输入数据: 这是所需的输出,其中对列 r、f 和 m 进行了转换,并将结果附加到原始数据 这是代码: import pandas as pd import numpy as np from s
我正在尝试预处理数据。 data = {'Country':['Germany', 'Turkey', 'England', 'Turkey', 'Germany', 'Turkey'],
我正在尝试使用参数定义自定义转换器,并在 sklearn.compose.ColumnTransformer 中使用它们。我不明白为什么当我在 ColumnTransformer 上运行 fit_tr
我有一个实体,我使用 ColumnTransformer 来绑定(bind)和提取值: @Entity class BPoint { @Id private Integer id;
我想知道是否可以在 ColumnTransformer 中使用 MultilabelBinarizer。 我有一个玩具 Pandas 数据框,例如: df = pd.DataFrame({"id":[
sklearn 中的 FeatureUnion() 和 ColumnTransformer() 有什么区别? 如果我想构建一个包含混合数据类型(分类、数字、非结构化文本)的特征的监督模型,我应该使用哪
我已经定义了适合一个分类特征“性别”的数据: data = pd.DataFrame({ 'age': [25,19, 17], 'sex': ['female', 'male', '
在 ColumnTransformer 中,我想使用 Tfidf 管道。但即使对于这个简单的示例,原始管道的转换输出类型和放入 ColumnTransformer 中的转换输出类型也是非常不同的类型。
这是我的第一个机器学习项目,也是我第一次使用 ColumnTransformer。我的目标是执行两步数据预处理,并为每一步使用 ColumnTransformer。 在第一步中,我想用字符串 'mis
我正在寻求使用 sklearn 的 ColumnTransformer 函数构建数据预处理管道的帮助。 目前我的流水线看起来像这样: from scipy.stats.mstats import wi
我正在关注 Aurelion Geron 的机器学习书籍。 我正在试验 ColumnTransformer 类。当我包含 SimplerImputer 时,会创建一个额外的列。我知道 SimplerI
我想在引用 ColumnTransformer(它是管道的一部分)中包含在 grid_search 的 param_grid 中的单个预处理器时找出正确的命名约定。 环境&样本数据: import s
我正在使用 scikit-learn 中的加州住房数据集。我想设计两个二元特征:“旧金山 10 公里以内”和“洛杉矶 10 公里以内”。我创建了一个自定义转换器,它自己可以正常工作,但是当我将它放入
我目前有一个这样注释的字段: ColumnTransformer( read="AES_DECRYPT(C_first_name, 'yourkey')", w
我通过加载 .pkl 文件来预测分类模型的值。它在我的本地工作,但在 AWS lambda 函数中抛出错误。本地和AWS上的pkl文件是相同的,因此问题不应该出现在pkl文件中。另外,我正确读取了 p
我是一名优秀的程序员,十分优秀!