- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前有一个这样注释的字段:
ColumnTransformer(
read="AES_DECRYPT(C_first_name, 'yourkey')",
write="AES_ENCRYPT(?, 'yourkey')")
public String getFirstName() {
return firstName;
}
最佳答案
我有同样的问题,我希望 key 是可配置的。我为此项目找到的唯一解决方案是在运行时更新注释值。是的,我知道这听起来很糟糕,但据我所知没有其他办法。
实体类:
@Entity
@Table(name = "user")
public class User implements Serializable {
@Column(name = "password")
@ColumnTransformer(read = "AES_DECRYPT(password, '${encryption.key}')", write = "AES_ENCRYPT(?, '${encryption.key}')")
private String password;
}
import org.hibernate.annotations.ColumnTransformer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Proxy;
import java.util.Map;
import javax.annotation.PostConstruct;
@Component(value = "transformerColumnKeyLoader")
public class TransformerColumnKeyLoader {
public static final String KEY_ANNOTATION_PROPERTY = "${encryption.key}";
@Value(value = "${secret.key}")
private String key;
@PostConstruct
public void postConstruct() {
setKey(User.class, "password");
}
private void setKey(Class<?> clazz, String columnName) {
try {
Field field = clazz.getDeclaredField(columnName);
ColumnTransformer columnTransformer = field.getDeclaredAnnotation(ColumnTransformer.class);
updateAnnotationValue(columnTransformer, "read");
updateAnnotationValue(columnTransformer, "write");
} catch (NoSuchFieldException | SecurityException e) {
throw new RuntimeException(
String.format("Encryption key cannot be loaded into %s,%s", clazz.getName(), columnName));
}
}
@SuppressWarnings("unchecked")
private void updateAnnotationValue(Annotation annotation, String annotationProperty) {
Object handler = Proxy.getInvocationHandler(annotation);
Field merberValuesField;
try {
merberValuesField = handler.getClass().getDeclaredField("memberValues");
} catch (NoSuchFieldException | SecurityException e) {
throw new IllegalStateException(e);
}
merberValuesField.setAccessible(true);
Map<String, Object> memberValues;
try {
memberValues = (Map<String, Object>) merberValuesField.get(handler);
} catch (IllegalArgumentException | IllegalAccessException e) {
throw new IllegalStateException(e);
}
Object oldValue = memberValues.get(annotationProperty);
if (oldValue == null || oldValue.getClass() != String.class) {
throw new IllegalArgumentException(String.format(
"Annotation value should be String. Current value is of type: %s", oldValue.getClass().getName()));
}
String oldValueString = oldValue.toString();
if (!oldValueString.contains(TransformerColumnKeyLoader.KEY_ANNOTATION_PROPERTY)) {
throw new IllegalArgumentException(
String.format("Annotation value should be contain %s. Current value is : %s",
TransformerColumnKeyLoader.KEY_ANNOTATION_PROPERTY, oldValueString));
}
String newValueString = oldValueString.replace(TransformerColumnKeyLoader.KEY_ANNOTATION_PROPERTY, key);
memberValues.put(annotationProperty, newValueString);
}
}
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" depends-on="transformerColumnKeyLoader"> ... </bean>
关于hibernate - 我想知道 Hibernate 是否有办法执行 ColumnTransformer 的编程配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19541252/
我想用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
我是一名优秀的程序员,十分优秀!