Я задал похожий вопрос , надеясь на поддержку Метааннотации в стиле Spring .
Однако, тем временем следующее хорошо работает для меня:
class SomeClass {
public static final String SOMETHING_METADEF_NAME = "somethingMetadefName";
@Any(metaColumn = @Column(name = "something_type"), fetch = FetchType.LAZY)
@AnyMetaDef(idType = "long", metaType = "string", name=SomeClass.SOMETHING_METADEF_NAME,
metaValues = {
@MetaValue(value = "A", targetEntity = AImpl.class),
@MetaValue(value = "B", targetEntity = BImpl.class),
@MetaValue(value = "C", targetEntity = CImpl.class),
@MetaValue(value = "D", targetEntity = DImpl.class),
@MetaValue(value = "E", targetEntity = EImpl.class),
etc.. })
public BaseSomething getRelatedSometing() {
return relatedSometing;
}
}
// Elsewhere
@Any(metaColumn = @Column(name = "something_type"), fetch = FetchType.LAZY,
metaDef=SomeClass.SOMETHING_METADEF_NAME)
public BaseSomething getAnotherSomething() {
return relatedSometing;
}
В частности, я определяю отношение один раз и даю ему свойство name
в @AnyMetaDef
.Затем я могу сослаться на это из @Any(metaDef=MY_NAME)
в другом месте.
Надеюсь, это поможет