我的数据位于不同的表中,但位于同一数据库中,所有这些都具有相同的架构。根据某些运行时变量,我想选择在查询 Hibernate 时使用哪个表。这可能吗?
请注意,我仅使用 Hibernate 将表数据读取到对象。
解决方案(我认为)是每个表一个 *.hbm.xml
文件和每个表一个 SessionFactory:
ClassTable1.hbm.xml: <class name="Class" table="table1">...</class>
ClassTable2.hbm.xml: <class name="Class" table="table2">...</class>
ClassTable3.hbm.xml: <class name="Class" table="table3">...</class>
HibernateUtil.java:
getSessionFactoryTable1() {...} // load mapping ClassTable1.hbm.xml
getSessionFactoryTable2() {...} // load mapping ClassTable2.hbm.xml
getSessionFactoryTable3() {...} // load mapping ClassTable3.hbm.xml
丑陋。特别是考虑到 *hbm.xml
文件之间的唯一区别是表属性。
是否有一些更奇特的方法可以做到这一点?理想情况下使用一个 Class.hbm.xml
。
最佳答案
Depending on some runtime variable, I want to choose which table to use when querying Hibernate.
如果您问此类问题,那么这告诉我 Hibernate 可能不是适合您的用例的最佳工具。
作为一个简单的解决方案,为什么不以编程方式控制在 HibernateUtil.getSessionFactory() 方法的配置中使用哪些 hbm.xml 文件呢? Hibernate 配置对象 can be programmatically configured .
关于java - Hibernate 中 n 个表到 1 个类的运行时单向映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293094/