تجاوز توضيح صحة السبات؟
-
20-09-2019 - |
سؤال
أرغب في تجاوز قيود في صحة السبات. ها هو صفي الأساسي:
@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;
}
}
لدي فصل طفل حيث أريد تحديد أن المعادلة لحقل المعادلة هي المعادلة.
@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: عمود متكرر في رسم الخرائط للكيان (طبيعي ، بسبب getter المكررة)
يوجد 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;
}
}
تحتاج إلى تحديد getter كـ transient لأنه إذا لم يكن الأمر كذلك ، فسيقوم Hibernate بإلقاء تعريف مكرر لحقل المعادلة. مجال المعادلة الخاص بي محمي الآن وليست خاصة.
والآن ، في كل من الفئة الفرعية الخاصة بك ، تقوم بتجاوز getaquation من خلال تحديد القيد (وبما أن transient لا يتم توريثه بواسطة الفئات الفرعية ، سيتم استخدام GetTivenation التجاوز لرسم خرائط حقل المعادلة).
هنا مثال من الفئة الفرعية:
@Entity(name = "CharacteristicUpgradeValue")
@DiscriminatorValue("CharacteristicUpgradeValue")
public class CharacteristicUpgradeValue extends Value
{
@Override
@SimpleEquation(equationType = EquationType.COST_VALUE)
public String getEquation()
{
return equation;
}
}
لم أجد أفضل ...