com.something.SuperClass ID列キー生成を使用することはできません:は(TABLE_PER_CLASS)<ユニオン・サブクラス>と
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class SuperClass implements Serializable {
private static final long serialVersionUID = -695503064509648117L;
long confirmationCode;
@Id
@GeneratedValue(strategy = GenerationType.AUTO) // Causes exception!!!
public long getConfirmationCode() {
return confirmationCode;
}
public void setConfirmationCode(long confirmationCode) {
this.confirmationCode = confirmationCode;
}
}
をcom.something.SubClass:
@Entity
public abstract class Subclass extends SuperClass {
private static final long serialVersionUID = 8623159397061057722L;
String name;
@Column(nullable = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
を与えます私はこの例外を除いて:
Caused by: org.hibernate.MappingException: Cannot use identity column key
generation with <union-subclass> mapping for: com.something.SuperClass
IDの生成にはどのような方法が便利ですか? 私は自分の継承戦略を変更したくありません。
パーフェクトソリューション。 さえ、Hibernateのフォーラムは、このソリューションを持っているように見えるdidnot、彼らは話題 https://forum.hibernate.org/viewtopic.php?p=2319244&sid=4493aa54d27d3f81a0e27ecbdda075ae –
の周りに起こったこの問題は、MySQLのみ、またはその定期的にはです。 Table per classアプローチのビデオの1つを見ると、postgresが使用されているという点でうまくいきました – Prashant
私は最近、Dropwizardアプリケーションをテストするときにこの問題に遭遇しました。私の場合は、セッション・ファクトリを作成するためにDWで使用されていたのと同じ設定オプションを使用することで対処しました。私は本当に "hibernate.id.new_generator_mappings"プロパティを設定することはそれを固定していることを確かめています。これはDW 0.7.0、Hibernate 4.3.1、DBはH2でした。 – sfitts