Java 是否可以在同一实体类中维护不同的模式

Java 是否可以在同一实体类中维护不同的模式,java,hibernate,orm,hibernate-mapping,hibernate-criteria,Java,Hibernate,Orm,Hibernate Mapping,Hibernate Criteria,我有两个模式(声明和策略)。对于两个模式,我使用相同的实体类。 我的问题是,索赔模式有city列,但策略模式有city列。所以,若我按策略模式使用实体类,我会得到一个错误。 这是否只是更改每个模式的实体类的唯一方法?或者可以在同一实体类中维护不同的模式吗 我的实体类: @Entity @Table(name = "Table_name") public class X { @Id @GeneratedValue(strategy=GenerationType.AUTO) @C

我有两个模式(声明和策略)。对于两个模式,我使用相同的实体类。 我的问题是,索赔模式有city列,但策略模式有city列。所以,若我按策略模式使用实体类,我会得到一个错误。 这是否只是更改每个模式的实体类的唯一方法?或者可以在同一实体类中维护不同的模式吗

我的实体类:

@Entity
@Table(name = "Table_name")
public class X {

   @Id
   @GeneratedValue(strategy=GenerationType.AUTO)
   @Column(name = "xxx")
   private int xxx;

   @Column(name = "yyy")
   private String yyy;

   @Column(name = "city")
   private String city;      // only claim schema 
 }  
我得到这样的模式

if(id.startsWith("SW")){
                session = getSWSession();
}
if(id.startsWith("HW")){
                session = getHWSession();
}

对于不同的模式,您需要有两个不同的映射,因此您必须创建两个java映射类,并使用表注释对它们进行注释,以标记每个特定实体的映射。

如果给定的实体类与两个不同的表相关联,那么Hibernate如何知道刷新哪个表呢?两个表名相同,但架构不同。您可以使用继承,并通过@table(schema=“Schema1”)注释为不同的实体提供不同的架构。通过这种方式,您可以对不同的模式使用不同的列