У меня похожая проблема в моей собственной схеме, поэтому то, к чему я сейчас прибегаю, выглядит так:
Родительский класс:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@SequenceGenerator(name="SEQ", sequenceName="part_id_seq", initialValue=1, allocationSize=1)
public abstract class BasePart {
@Id
@Column(name="part_id")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ")
protected Long partId;
@YourBusinessKeyAnnotation
@Column(name="part_number")
protected String partNumber
...
}
Детские классы:
@Entity
public class FordPart extends BasePart {
...
}
@Entity
public class ChevyPart extends BasePart {
...
}
Теперь я мог затем манипулировать ключом biz так, как мне было нужно, и это сработало хорошо, потому что каждый из различных типов деталей получил свою собственную таблицу (что полезно для нас).
Вы также можете использовать @Embedded
с @AttributeOverrides
Я думаю, чтобы указать имена столбцов по-разному, как вам нужно ... Есть пример из документации аннотаций .
@Entity
public class Person implements Serializable {
// Persistent component using defaults
Address homeAddress;
@Embedded
@AttributeOverrides( {
@AttributeOverride(name="iso2", column = @Column(name="bornIso2") ),
@AttributeOverride(name="name", column = @Column(name="bornCountryName") )
} )
Country bornIn;
...
}
...
@Entity
public class Person implements Serializable {
// Persistent component using defaults
Address homeAddress;
@Embedded
@AttributeOverrides( {
@AttributeOverride(name="iso2", column = @Column(name="bornIso2") ),
@AttributeOverride(name="name", column = @Column(name="bornCountryName") )
} )
Country bornIn;
...
}
...
@Embedded
@AttributeOverrides( {
@AttributeOverride(name="city", column = @Column(name="fld_city") ),
@AttributeOverride(name="nationality.iso2", column = @Column(name="nat_Iso2") ),
@AttributeOverride(name="nationality.name", column = @Column(name="nat_CountryName") )
//nationality columns in homeAddress are overridden
} )
Address homeAddress;
Возможно, вы сможете злоупотребить этим настолько, что вам будет все равно ...