최대 절전 모드 유효성 검사기 주석의 재정의?
-
20-09-2019 - |
문제
Hibernate Validator의 제약 조건을 무시하고 싶습니다. 여기 내 기본 클래스가 있습니다.
@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.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을 가지고 있다는 예외를 던지기 : 엔티티의 매핑에서 반복 열 (중복 getter로 인한 정상)
Hibernate/JPA에는 @attributeoverride가 있지만이 속성이 아닌 열 재정의 만으로만 실행되는 것 같습니다.
어떻게하니 ?
감사해요
해결책
글쎄 ... 나는 그것을 달성하기위한 팁을 찾았다 ... 그다지 깨끗하지는 않지만 ... 달린다 :
여기 내 기본 클래스가 있습니다.
@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로 지정해야합니다. 내 방정식 필드는 이제 보호되지 않고 비공개가 아닙니다.
그리고 이제 각 서브 클래스에서 구속 조건을 지정하여 Getequation을 무시합니다 (및 하위 클래스에 의해 @Transient가 상속되지 않으므로 재정의 getequation은 방정식 필드 매핑에 사용됩니다).
다음은 하위 클래스 예입니다.
@Entity(name = "CharacteristicUpgradeValue")
@DiscriminatorValue("CharacteristicUpgradeValue")
public class CharacteristicUpgradeValue extends Value
{
@Override
@SimpleEquation(equationType = EquationType.COST_VALUE)
public String getEquation()
{
return equation;
}
}
더 잘 찾지 못했습니다 ...
제휴하지 않습니다 StackOverflow