在InheritanceType.TABLE_PER_CLASS中覆盖列名

时间:2015-10-02 12:41:02

标签: java hibernate jpa inheritance table-per-class

使用TABLE_PER_CLASS继承时,有没有办法覆盖列名?

医生说:
"这种方法的局限性在于,如果属性映射到超类,则所有子类表上的列名必须相同。" :(

@AttributeOverride不起作用

示例:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Parent {
  @Id
  String id;

  String parentProperty;
}

@Entity
public class Child extends Parent {
}

和一些示例查询

entityManager.createQuery("select p.parentProperty from Parent p", String.class).getResultList()

产生

select
    parent0_.parentProperty as col_0_0_ 
from
    ( select
        id,
        parentProperty,
        1 as clazz_ 
    from
        Child ) parent0_

有没有办法强制Hibernate在子子查询中使用一些自定义属性名?问题是我有一些遗留数据库,其中几个表包含相同的数据,但有些列名不同......

编辑:我最终得到了包含重命名列名的视图

0 个答案:

没有答案