Quiero saber las anotaciones de una variable miembro de una clase, uso BeanInfo beanInfo = Introspector.getBeanInfo(User.class)
para introspectar una clase, y uso BeanInfo.getPropertyDescriptors()
, para encontrar una propiedad específica, y uso la clase type = propertyDescriptor.getPropertyType()
para obtener la clase de la propiedad.¿Cómo obtener anotaciones de una variable miembro?
¿Pero no sé cómo obtener las anotaciones agregadas a la variable miembro?
Intenté type.getAnnotations()
y type.getDeclaredAnnotations()
, pero ambas devuelven las anotaciones de la Clase, no es lo que quiero. Por ejemplo:
class User
{
@Id
private Long id;
@Column(name="ADDRESS_ID")
private Address address;
// getters , setters
}
@Entity
@Table(name = "Address")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
class Address
{
...
}
Quiero conseguir la anotación de la dirección: anotaciones @Column, no la clase de la dirección (@Entity, @Table, @Cache). ¿Cómo lograrlo? Gracias.
@Bozho Podría ser útil si copia los objetos de base de datos, como parece ser el caso aquí. La copia no puede tener la misma ID, si se supone que se convierta en una entidad DB diferente. Un algoritmo de copia genérico podría excluir cualquier cosa con Annotation '@Id'. – Hok