Hibernate:带注释的动态表名称的数据对象

我有一个与表关联的Hibernate数据类;想象这样的实体

 @Entity

@org.hibernate.annotations.Proxy(lazy=false)

@Table(name="Person", schema="MySchema")

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)

public class ProfileData implements Serializable {

private static final long serialVersionUID = -844564646821609090L;

public PersonData() {

}

@Column(name="idPerson", nullable=false, unique=true)

@Id

...

:Person2010,Person2011,Person2012

…是否可以不创建新的数据对象?也许是通过参数…?我不知道。

实体类相同,只是更改了表名和构造函数。

回答:

另一个体系结构,更复杂但更优雅:

,您可以使用 NamingStrategies 更改表名称:

public class MyNamingStrategy extends DefaultNamingStrategy {

...

@Override

public String tableName(String tableName) {

return tableName+yearSuffixTable;

}

...

}

而且,当您想使用_year表时,必须使用Hibernate创建一个覆盖rhe表名称的会话:

  SessionFactory sessionFactory;

Configuration config = new AnnotationConfiguration()

.configure("hibernate.cfg.xml")

.setNamingStrategy( new MyNamingStrategy () );

sessionFactory = config.buildSessionFactory();

session = sessionFactory.openSession();

对于我的体系结构,我每年创建一个会话,并将其存储到应用程序映射中以在需要时进行访问。

谢谢。

以上是 Hibernate:带注释的动态表名称的数据对象 的全部内容, 来源链接: utcz.com/qa/400043.html

回到顶部