Java Hibernate@Table名称作为参数



我在类中有一个名为 Message 的表定义,带有休眠注释@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

其他一切都应该相同。

怎么办?

您可以使用命名策略更改表名称。

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();

最新更新