我有下一个问题:我在数据库中有几个表,不知何故我需要从其中一个查询,但只有在运行时我才会知道所需表的名称,所以有可能通过表名为运行时实体的@Table注释?所有这些表都具有完全相同的模式。唯一的区别 - 名称(BILLING_DATA_2016_1,BILLING_DATA_2015_12等)。有人知道如何动态传递表名?或者可能是查询和继承的一些黑客?
答案 0 :(得分:0)
您可以尝试HibernateInterceptor。将{BILLING_DATA_PLACEHOLDER}字符串放入@Table注释中,然后立即替换它
public class HibernateInterceptor extends EmptyInterceptor {
@Override
public String onPrepareStatement(String sql) {
String prepedStatement = super.onPrepareStatement(sql);
prepedStatement = prepedStatement.replaceAll("{BILLING_DATA_PLACEHOLDER}", theRealSchemaName);
return prepedStatement;
}
}
没有尝试过