Criei ela com o target @Target(ElementType.ANNOTATION_TYPE)
Como um teste que não tem nada a v com seu real motivo de utilização, criei (estou tentando criar) uma annotation que realiza exatamente o que essa do hibernate faz:
Criei ela com o target @Target(ElementType.ANNOTATION_TYPE)
Entenda que uma anotação do tipo ANNOTATION_TYPE é usada para anotar outra anotação. Exemplos são @Retention e @Target
Elas são usadas em arquivos public @interface.
A sua notação precisa ter o mesmo tipo que JoinColumns.
Este tipo de anotação que tem um array de anotações é necessária devido à limitação logica de não poder anotar duas vezes a mesma coisa
com a mesma anotação ( que faz todo o sentido do mundo)
No java 7 esta restrição está agendada para ser removida.
Mas esta dando um erro de compilação: The attribute Value is undefinied for the annotation type JoinColumns, devo estar fazendo algo errada na utilização das annotations, certo ??
Obrigado.
Josemar_Jobs
do jeito que tá vc teria que usar a anotação assim:
ou simplesmente, vc poderia definir o atributo como value, e não joinColumn
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface JoinColumns {
JoinColumn[] value();
}
sunwebdeveloper
Bom Dia Josemar,
Obrigado pela ajuda… eu ontem assim que postei a ultima msg me atentei a isso e refatorei meu atributo para value, confesso que não fui tentar descobrir o pq ?? Vc sabe ??
Obrigado.
sergiotaborda
sunwebdeveloper:
Bom Dia Josemar,
Obrigado pela ajuda… eu ontem assim que postei a ultima msg me atentei a isso e refatorei meu atributo para value, confesso que não fui tentar descobrir o pq ?? Vc sabe ??
Obrigado.
Value é o default. quando vc não escreve o nome do parametro da anotação, o java assume que é value. Mas precisa estar definido no annotation.
Por que isso que funciona quando vc chama o atributo de value e não faz value = {} , porque não precisa de por.