Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка JSON при использовании JPA, restful / 5 сообщений из 5, страница 1 из 1
06.03.2015, 09:13
    #38896822
danatriel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка JSON при использовании JPA, restful
Всем доброго дня! Уже и танцы с бубном не помогают, прошу у вас помощи.
Через restful нужно сохранить объект в БД с использованием JPA.
Вот ошибка (ниже будут исходники):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "active" (class com.entities.Excursion), not marked as ignorable (6 known properties: "isActive", "shortDescription", "id", "pathExcursion", 
"fullDescription", "pictureDescription"])
 at [Source: io.undertow.servlet.spec.ServletInputStreamImpl@200a7241; line: 1, column: 46] (through reference chain: com.entities.Excursion["active"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51) [jackson-databind-2.4.1.jar:2.4.1]
	at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:731) [jackson-databind-2.4.1.jar:2.4.1]
	at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:915) [jackson-databind-2.4.1.jar:2.4.1]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1292) [jackson-databind-2.4.1.jar:2.4.1]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1270) [jackson-databind-2.4.1.jar:2.4.1]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:247) [jackson-databind-2.4.1.jar:2.4.1]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118) [jackson-databind-2.4.1.jar:2.4.1]
	at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1232) [jackson-databind-2.4.1.jar:2.4.1]
	at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:676) [jackson-databind-2.4.1.jar:2.4.1]
	at org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider.readFrom(ResteasyJackson2Provider.java:120) [resteasy-jackson2-provider-3.0.10.Final.jar:]
	at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.readFrom(AbstractReaderInterceptorContext.java:59) [resteasy-jaxrs-3.0.10.Final.jar:]
	at org.jboss.resteasy.core.interception.ServerReaderInterceptorContext.readFrom(ServerReaderInterceptorContext.java:62) [resteasy-jaxrs-3.0.10.Final.jar:]
	at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:51) [resteasy-jaxrs-3.0.10.Final.jar:]
	at org.jboss.resteasy.security.doseta.DigitalVerificationInterceptor.aroundReadFrom(DigitalVerificationInterceptor.java:32) [resteasy-crypto-3.0.10.Final.jar:]
	at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53) [resteasy-jaxrs-3.0.10.Final.jar:]
	at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59) [resteasy-jaxrs-3.0.10.Final.jar:]
	at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53) [resteasy-jaxrs-3.0.10.Final.jar:]
	at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:150) [resteasy-jaxrs-3.0.10.Final.jar:]
	... 37 more



Куда копать?? Как победить эту ошибку??

Класс сущности:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
@Entity
@Table(schema = "public")
public class Excursion implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id_excursion;
    

    private String short_description;
    private String full_description;
    private String picture_description;
    private String path_excursion;
    private Boolean is_active=true;
    
    public Long getId() {
        return id_excursion;
    }

    public void setId(Long id) {
        this.id_excursion = id;
    }
    
    public String getShortDescription(){
        return this.short_description;
    }

    public void setShortDescription(String short_description){
        this.short_description=short_description;
    }

    public String getFullDescription(){
        return this.full_description;
    }
    public void setFullDescription(String full_description){
        this.full_description=full_description;
    }
    public String getPictureDescription(){
        return this.picture_description;
    }
    public void setPictureDescription(String picture_description){
        this.picture_description=picture_description;
    }

    public String getPathExcursion(){
        return this.path_excursion;
    }

    public void setPathExcursion(String path_excursion){
        this.path_excursion=path_excursion;
    }

    public void setIsActive(Boolean active){
        this.is_active=active;
    }

    public Boolean isActive(){
        return this.is_active;
    }
}



SessionBean:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@Path("/excursion")
@Stateless
@Produces(MediaType.APPLICATION_JSON)
public class ExcursionFacade extends AbstractFacade<Excursion> {
    @PersistenceContext(unitName = "audio_guide")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public ExcursionFacade() {
        super(Excursion.class);
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public abstract class AbstractFacade<T> {
    private Class<T> entityClass;

    public AbstractFacade(Class<T> entityClass) {
        this.entityClass = entityClass;
    }

    protected abstract EntityManager getEntityManager();

    @PUT
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response create(T entity) {
        getEntityManager().persist(entity);
        getEntityManager().flush();
        return Response.ok(entity).build();
    }
}




Тест:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public void crudExample() {
      String REST_SERVICE_URL = "http://localhost:8080/application/webresources/excursion";
      Client client = ClientBuilder.newClient().register(JacksonFeature.class);

      Excursion excursion = new Excursion();
      Excursion excursionPersisted = client
                .target(REST_SERVICE_URL)
                .request()
                .put(Entity.entity(excursion, MediaType.APPLICATION_JSON),
                        Excursion.class);
}
...
Рейтинг: 0 / 0
06.03.2015, 09:31
    #38896837
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка JSON при использовании JPA, restful
danatrielВсем доброго дня! Уже и танцы с бубном не помогают, прошу у вас помощи.
Через restful нужно сохранить объект в БД с использованием JPA.
Вот ошибка (ниже будут исходники):
Тест:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public void crudExample() {
      String REST_SERVICE_URL = "http://localhost:8080/application/webresources/excursion";
      Client client = ClientBuilder.newClient().register(JacksonFeature.class);

      Excursion excursion = new Excursion();
      Excursion excursionPersisted = client
                .target(REST_SERVICE_URL)
                .request()
                .put(Entity.entity(excursion, MediaType.APPLICATION_JSON),
                        Excursion.class);
}



Вам же английским по белому написали -
Поля должны быть заполнены.
Т.е. вы не заполнили данными переменную excursion.
...
Рейтинг: 0 / 0
06.03.2015, 09:51
    #38896859
danatriel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка JSON при использовании JPA, restful
mad_nazgul,

мне русским по белому написали "Не корректное поле "active", прошу заметить, в классе такого поля нет.
Но проблема уже разрешилась. JSON, видать не признает сеттеры и геттеры со словом Active. Переименовал методы и все разаработало :)
...
Рейтинг: 0 / 0
06.03.2015, 10:36
    #38896912
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка JSON при использовании JPA, restful
danatrielmad_nazgul,

мне русским по белому написали "Не корректное поле "active", прошу заметить, в классе такого поля нет.
Но проблема уже разрешилась. JSON, видать не признает сеттеры и геттеры со словом Active. Переименовал методы и все разаработало :)

У вас есть поле "active"...
Только оно назвается is_active ;-)
Похоже на особенности Jackson.
...
Рейтинг: 0 / 0
06.03.2015, 11:29
    #38896973
danatriel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка JSON при использовании JPA, restful
mad_nazgul,

кстати, сначала переименовал поле - попробовал - результат нулевой.
а вот когда геттеры и сеттеры переименовал - вот тогда и заработало. Похоже на недокументированную особенность :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ошибка JSON при использовании JPA, restful / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]