Hibernateバリデータのアノテーションのオーバーライド?
-
20-09-2019 - |
質問
私は、Hibernateバリデータに制約を無効にしたいと思います。ここに私の基本クラスがあります:
@Entity
@Table(name = "Value")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "valueType", discriminatorType = DiscriminatorType.STRING)
public abstract class Value extends CommonTable
{
private String equation;
@SimpleEquation(equationType = EquationType.EQUATION)
public String getEquation()
{
return equation;
}
public void setEquation(String equation)
{
this.equation = equation;
}
}
私は数式フィールドのequationTypeはEquationType.ANOTHER_EQUATION、このようなものであることを指定したい子クラスを持ってます:
@Entity(name = "CharacteristicUpgradeValue")
@DiscriminatorValue("CharacteristicUpgradeValue")
public class CharacteristicUpgradeValue extends Value
{
@Override
@SimpleEquation(equationType = EquationType.COST_VALUE)
public String getEquation()
{
return super.getEquation();
}
}
(による重複ゲッターに、通常の)エンティティのマッピングで繰り返さ列:このコードは、私がorg.hibernate.MappingExceptionを持っているという例外をスロー
があり@AttributeOverrideは、Hibernate / JPAであるが、列のオーバーライドと属性のないこの種のみ実行するようです。
どのように私はそれを行うことができますか?
感謝
解決
うーん...私はそれは非常にきれいではありません...それを達成するためのヒントを見つけた...しかし、それが実行されます:
ここに私の基本クラスがあります:
@Entity
@Table(name = "Value")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "valueType", discriminatorType = DiscriminatorType.STRING)
public abstract class Value extends CommonTable
{
protected String equation;
@Transient
public abstract String getEquation();
public void setEquation(String equation)
{
this.equation = equation;
}
}
あなたはされていない場合、Hibernateは数式フィールドの重複定義がスローされますので、@Transientとしてゲッターを指定する必要があります。私の数式フィールドは、現在、民間保護されていません。
そして今、あなたのサブクラスのそれぞれについて、あなたは制約を指定(して@Transientはサブクラスに継承されていないとして、オーバーライドgetEquationは、式のフィールドマッピングのために使用されます)によってgetEquationを上書きします。
ここでサブクラスの例です。
@Entity(name = "CharacteristicUpgradeValue")
@DiscriminatorValue("CharacteristicUpgradeValue")
public class CharacteristicUpgradeValue extends Value
{
@Override
@SimpleEquation(equationType = EquationType.COST_VALUE)
public String getEquation()
{
return equation;
}
}
私は良く発見していない...
所属していません StackOverflow