2016-10-06 5 views
0

У меня есть большая проблема с использованием datastax java-driver-mapping в karaf 4.1.0-SNAPSHOT, мне нужно, чтобы получить аннотацию @Table от Cassandra лица в этом случае:Karaf 4,1 - ClassCastException от Apache Aries Proxy Кассандры Entity Аннотация

@Table(name = "clients") 
public class Client implements Serializable { 

    @PartitionKey 
    @Column(name = "client_id") 
    private String clientId; 
    @Column(name = "client_secret") 
    private String clientSecret; 

    //getters and setters ... 
} 

этот объект находится в связке моделей, у меня есть пакет для услуг и один к настойчивости, когда я пытаюсь сделать это в моей настойчивостью пачке:

@Override 
public void save(Serializable obj, Class clazz) { 
    System.out.println(((Table)clazz.getAnnotations()[0]).name()); 
} 

Я получаю эту ошибку в строке System.out .println:

java.lang.ClassCastException: com.sun.proxy.$Proxy110 cannot be cast to com.datastax.driver.mapping.annotations.Table 
    at io.twim.cassandra.TwimCassandraImpl.save(TwimCassandraImpl.java:159) [216:twim-cassandra:1.0.0.SNAPSHOT] 
    at Proxyc0a03eb5_6454_4ea2_a12f_daddf586d502.save(Unknown Source) [?:?] 
    at io.twim.core.users.TwimServiceUserImpl.saveApplicationClient(TwimServiceUserImpl.java:50) [218:twim-core:1.0.0.SNAPSHOT] 
    at Proxy60a7b95f_6d2d_4487_bd18_dfd7c359a958.saveApplicationClient(Unknown Source) [?:?] 
    at io.twim.rest.register.ClientRegistrationImpl.init(ClientRegistrationImpl.java:69) [223:twim-rest:1.0.0.SNAPSHOT] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] 
    at java.lang.reflect.Method.invoke(Method.java:497) ~[?:?] 
    at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299) [12:org.apache.aries.blueprint.core:1.7.0] 

Что мне делать, чтобы исправить эту проблему? У кого-нибудь есть идея?

отредактированы

Debug

ответ

0

В Java любой аннотации представлен в виде прокси-сервера во время выполнения. Поэтому иногда вы можете столкнуться с этой проблемой.

Вместо этого вы можете попробовать использовать clazz.getAnnotation (Table.class) .name.

+0

Я добавил изображение от отладчика, ваш совет получает нулевое значение, но если я получаю метод аннотаций, он показывает аннотацию типа Proxy, что вы думаете об этом? – christmo