gpt4 book ai didi

hibernate - 在 EclipseLink 中映射列名和表名

转载 作者:行者123 更新时间:2023-12-01 11:07:27 24 4
gpt4 key购买 nike

我在 hibernate 中使用了 ImprovedNamingStrategy,将 Java 字段名映射到 MySQL 列名。

ex) birthDate 字段 -> birth_date 列,AccountRole 类 -> account_role 表

我正在测试将 hibernate 代码迁移到 eclipselink 代码。

EclipseLink 中与 hibernamte 的 ImprovedNamingStrategy 等效的是什么?

最佳答案

public class MyCustomizer implements SessionCustomizer {

public void customize(Session session) throws Exception {
Map<Class, ClassDescriptor> descs = session.getDescriptors();
Collection<ClassDescriptor> descriptors = descs.values();
for (ClassDescriptor desc : descriptors) {
updateMappings(desc);
}
}

private void updateMappings(ClassDescriptor desc) {
for (DatabaseMapping mapping : desc.getMappings()) {
if (mapping.isDirectToFieldMapping()) {
DirectToFieldMapping directMapping = (DirectToFieldMapping) mapping;
String name = directMapping.getAttributeName();
String regex = "([a-z])([A-Z]+)";
String replacement = "$1_$2";
String newName = name.replaceAll(regex, replacement)
.toUpperCase();
directMapping.getField().resetQualifiedName(newName);
}
}
}
}

将属性插入到 persistence.xml 中:

  <property name="eclipselink.session.customizer" value="com.test.MyCustomizer" />

关于hibernate - 在 EclipseLink 中映射列名和表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com