java - Hibernate 中 n 个表到 1 个类的运行时单向映射

标签 java hibernate mapping orm sessionfactory

我的数据位于不同的表中,但位于同一数据库中,所有这些都具有相同的架构。根据某些运行时变量,我想选择在查询 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/

相关文章:

java - 使用 Jackson CSV 将 CSV 解析为 POJO 列表

java - 为什么要使用 Mockito?

elasticsearch - 如何从Elasticsearch获取自定义分析器源?

json - Entity Framework : How to map a complex object to a single varchar column (i. e。以序列化形式保存)?

c++ - 通过多个键对大 vector 进行预排序并存储映射

Java servlets,将文本文件中的数据写入网页

java - 将 byte[] 转换为 String,然后再转换回 byte[]

java - 如何将十六进制字符串转换为十六进制字节?

java - 内部异常 : com. mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败

hibernate 外键作为主键的一部分