我有以下情况:
1)具有复合PK的抽象@MappedSuperClass:
@MappedSuperclass
@EqualsAndHashCode(of = { "id" }, callSuper = false)
public abstract class LocalizedDetail {
private static final long serialVersionUID = 1L;
@EmbeddedId
@Getter
@Setter
private LocalePK id;
(...)
2)这是我的PK:
@Embeddable
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class LocalePK implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "ID", length = 256)
@Getter
@Setter
private String id;
@Column(name = "LOCALE", length = 16)
@Getter
@Setter
private String locale;
}
3)LocalizedDetail子类:
@Entity
@Table(name = "BT_VALUE_OBJECT_INFO")
public class ValueObjectInfo extends LocalizedDetail {
(...)
4)使用org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor插件通过maven生成JPA元模型。
正在发生的是生成的LocalePK元模型没有任何属性:
@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(LocalePK.class)
public abstract class LocalePK_ {
}
但是,如果我将此LocalePK设置为任何其他未扩展LocalizedDetail的实体的复合PK,则会正确生成。我需要创建一个"假的"实体类只是为了生成这个元模型。
此模型是否存在任何已知限制以生成正确的PK元模型?
谢谢,
答案 0 :(得分:0)
根据Java Persistence with Hibernate,Second Edition
@MappedSuperClass
不是一个很好的方法。考虑使用
@Inheritance(stragety = TABLE_PER_CLASS)
代替。
答案 1 :(得分:0)
实际上,我找到了将其更新为Version 5.4.23.的解决方案,希望对其他任何人都有用。