주석 내부에 메타 데이터 구조를 만드는 데 문제가 있습니다. 우리는 Hibernate 엔티티 속성을위한 특수 속성을 정의하기 위해 주석을 사용하고 있지만 모든 곳에서 사용할 수 있습니다. 나는이 구조 표현 조건 만들려면 :Java annotation의 계층 구조
attribute1 = ...
OR
(attribute2 = ...
AND
attribute3 = ...)
문제는 내가이 주석을 사용하여 일부 "트리"구조를 정의 할 필요가입니다.
public class Table {
@ComposedCondition(logicalExressions = {
@OR(attributes = {@Attribute(... some settings ...)},
logicalExpressions = {
@AND(attributes = {@Attribute(...), @Attribute(...)})
})
}
private String value;
}
내가 주석 정의에 정의 된 방법으로 상속이 위 알고 :이 예에 따라 사용할
@interface Attribute {
... some attributes ...
}
@interface LogicalExpression {
}
@interface OR extends LogicalExpression {
Attribute[] attributes() default {};
LogicalExpression logicalExpressions() default {};
}
@interface AND extends LogicalExpression {
Attribute[] attributes() default {};
LogicalExpression logicalExpressions() default {};
}
@interface ComposedCondition {
Attribute[] attributes() default {};
LogicalExpression logicalExpressions() default {};
}
이러한 모든 주석 : 여기에 도달 할 몇 가지 디자인이다 불가능합니다. 하지만 내 주석을 고려하고 OR을 하나의 "가족"에 포함시킬 수 있습니까?
AND
조건을 실행하기 위해OR
상태와andAttributes()
을 실행하는orAttributes()
방법을 사용할 수 있습니다. 일반 LogicalExpression 목록을 통해 구조를 정의해야하지만 특정 AND 또는 OR 또는 NOT 또는 다른 표현식을 사용해야합니다. –답변을 업데이트했습니다. 귀하의 목적을 확실히 충족시킬 것으로 생각합니다. –
좋은 생각이지만 여전히이 솔루션에는 자체 한계가 있습니다. 그러나 당신의 솔루션은 나에게 또 다른 아이디어를 가져다 준다 - 나는 그것을 NODE 형태로 구현할 수있다. 노드에는 현재 레벨에 적용된 논리 표현식의 유형과 속성 목록 및 하위 노드 목록이 포함됩니다. –