मैं कक्षा के कुछ सदस्य चर की एनोटेशन जानना चाहता हूं, मैं कक्षा के आत्मनिरीक्षण के लिए BeanInfo beanInfo = Introspector.getBeanInfo(User.class)
का उपयोग करता हूं, और विशिष्ट संपत्ति खोजने के लिए BeanInfo.getPropertyDescriptors()
का उपयोग करता हूं, और संपत्ति की कक्षा प्राप्त करने के लिए कक्षा type = propertyDescriptor.getPropertyType()
का उपयोग करता हूं।सदस्य चर के एनोटेशन कैसे प्राप्त करें?
लेकिन मुझे नहीं पता कि सदस्य चर में एनोटेशन कैसे प्राप्त किया जाए?
मैंने type.getAnnotations()
, और type.getDeclaredAnnotations()
की कोशिश की, लेकिन दोनों क्लास की एनोटेशन वापस लौटते हैं, जो मैं चाहता हूं। उदाहरण के लिए:
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
{
...
}
मैं पता के एनोटेशन प्राप्त करना चाहते हैं: @Column, नहीं वर्ग पता के एनोटेशन (@Entity, @Table, @Cache)। उसकी प्राप्ति कैसे हो ? धन्यवाद।
public void getAnnotations(Class clazz){
for(Field field : clazz.getDeclaredFields()){
Class type = field.getType();
String name = field.getName();
field.getDeclaredAnnotations(); //do something to these
}
}
@Bozho यह उपयोगी हो सकता है अगर आप डीबी वस्तुओं कॉपी, जैसा कि यहाँ मामला प्रतीत हो रहा है। प्रतिलिपि में एक ही आईडी नहीं हो सकती है, अगर इसे एक अलग डीबी इकाई बनना है। एक सामान्य प्रतिलिपि एल्गोरिदम एनोटेशन '@Id' के साथ कुछ भी बाहर कर सकता है। – Hok