Java Hibernate @Table名称作为参数

时间:2016-07-12 06:35:56

标签: java database hibernate parameters

我在类Message中有一个表定义,带有hibernate注释@Table(name="message")

@Entity
@Table(name="message")
public class Message implements Serializable

所以我能够创建Message个对象并将它们从java代码存储到数据库表message中。

我想要告诉Message对象应该使用哪个表名,例如:我想用Message(String tableName)之类的参数创建它。然后将从该参数中使用表名注释,例如

@Entity
@Table(name=tableName)
public class Message implements Serializable

其他一切都应该是一样的。

怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用NamingStrategies更改表名。

public class MyNamingStrategy extends DefaultNamingStrategy {

   @Override
   public  String tableName(String tableName) {
   return tableName;
 }
}

然后使用如下。

SessionFactory sessionFactory;
Configuration config = new AnnotationConfiguration()
.configure("hibernate.cfg.xml")
.setNamingStrategy( new MyNamingStrategy () );
sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();