我在类中有一个名为 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();