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