gpt4 book ai didi

java - 如何动态填充注释

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:07 28 4
gpt4 key购买 nike

遗憾的是,我今天工作时忘记带代码了。但也许这个小例子会澄清一些事情。

我使用 hibernate 将 bean 映射到表。

示例:

import javax.persistence.column;
….
String columnameA;
….
@Column(name="columnameA")
public String getColumname(){
return columnameA
}
….

我不想在我的源代码中对列名(“columnameA”)进行硬编码,因为我需要在不构建整个项目的情况下切换列名。我想使用类似的东西:

@Column(name=getColumnName())

这行不通。 这个想法是,将列名写入 jndi 树中的某处并在启动时使用它。所以我只需要重新启动应用程序来更改列名。

解决这个问题的唯一方法——我能想到的——是编写我自己的注释,它扩展了 hibernate 类。有更简单的方法吗?

最佳答案

您无法通过注释实现此目的,但针对您的特定问题的解决方案是实现自定义 NamingStrategy :

public class NamingStrategyWrapper implements NamingStrategy {
private NamingStrategy target;

public NamingStrategyWrapper(NamingStrategy target) {
this.target = target;
}

public String columnName(String arg0) {
if ("columnameA".equals(arg0)) return getColumnName();
else return target.columnName(arg0);
}

...
}

-

AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.setNamingStrategy(new NamingStrategyWrapper(cfg.getNamingStrategy()));
factory = cfg.configure().buildSessionFactory();

关于java - 如何动态填充注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3087582/

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