Org.springframework.web.HttpMediaTypeNotSupportedException

 when i am trying to get values by id ..i got error like this in postman  

{ "отметка времени": 1547708533031,
«статус»: 500,
"error": "Внутренняя ошибка сервера", «исключение»: «org.springframework.http.converter.HttpMessageNotWritableException»,
"message": "Не удалось записать JSON: не найден сериализатор для класса org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer и не обнаружены свойства для создания BeanSerializer (чтобы избежать исключения, отключите SerializationFeature.FAIL_ON_EMPTY_BEANS); вложенное исключение com.fasterxml .jackson.databind.JsonMappingException: не найден сериализатор для класса org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer и не обнаружены свойства для создания BeanSerializer (чтобы избежать исключения, отключите SerializationFeature.FAIL_ON_EMPTY_BEANS) (через цепочку ссылок: com.Entites .ArtistRegister [\ "subcetgory \"] -> com.Cetegory.Entites.SubCetegory _ $$ _ jvst706_1 [\ "обработчик \"]) ",
"путь": "/ getartist / 2"
}

this is contoller for get data by id
@RestController
public class RegisterController {

    @Autowired
    ArtistService artser;

    @PostMapping(value = "/addArtist",produces = "application/json")
    @ResponseBody public ArtistRegister addArtist(@RequestBody ArtistRegister artist) {

        ArtistRegister artRegister = null;
        try {

            artRegister = artser.addArtist(artist);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return artRegister;

    }  

    @RequestMapping(value = "/getartist/{artist_id}",method=RequestMethod.GET,produces = "application/json")
    @ResponseBody   public ArtistRegister getArtistDetails(@PathVariable ("artist_id") int artist_id ,HttpServletRequest request,
        HttpServletResponse response) throws Exception{
    return artser.getArtistDetails(artist_id);

    }   

    @RequestMapping(value = "/delete/{artist_id}",method=RequestMethod.DELETE,produces = "application/json")
        public void deleteById(@PathVariable (value = "artist_id") int artist_id,HttpServletRequest request,
                HttpServletResponse response) throws Exception{
            artser.deleteById(artist_id);
        }

    @RequestMapping(value = "/updateartist", method = RequestMethod.PUT, produces = "application/json")
    public ArtistRegister updateArtist(@RequestBody ArtistRegister artreg, HttpServletRequest request, HttpServletResponse response)
            throws Exception 
    {   
        return artser.updateArtist(artreg);
    }


this is service
@Service
@Transactional
public class ArtistService {

    @Autowired
    private ArtistRepository artrep;

    @Autowired
    private RegisterDAO artdao;

    public ArtistRegister addArtist(ArtistRegister artreg) {

        ArtistRegister artReg = null;
        try {
            artReg = artrep.save(artreg);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return artReg;
    }

    public ArtistRegister getArtistDetails(int artist_id) {
        return artdao.getArtistDetails(artist_id);

    }

    public void deleteById(int artist_id) {
        artdao.deleteById(artist_id);
    }

    public ArtistRegister updateArtist(ArtistRegister artreg) {
        return artdao.updateArtist(artreg);

    }

}


this is DAO
@Repository
@Transactional
public class RegisterDAO {

    private static final Logger logger = LoggerFactory.getLogger(SubCetegoryDAO.class);

    @Autowired
    SessionFactory sessionFactory;

    @Autowired
    EntityManager entitymanager;

    public ArtistRegister getArtistDetails(int artist_id) {

        try 
        {
            String hql = "FROM ArtistRegister a where a.artist_id=?";
            return (ArtistRegister) entitymanager.createQuery(hql).setParameter(1, artist_id).getSingleResult();
        } 
        catch (EmptyResultDataAccessException e) 
        {
            return null;
        } 
        catch (Exception e) 
        {
            logger.error("Exception in getUser"+ e.getMessage());
            return null;
        }

    }
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
0
333
1

Ответы 1

Удалите аннотацию @JsonManagedReference и измените тип выборки на LAZY следующим образом:

 @OneToOne(targetEntity = SubCetegory.class, cascade = CascadeType.MERGE,fetch=FetchType.LAZY)
 @JoinColumn(name = "sub_cetegory_id")

Что такое типы выборки Lazy и Eager?

The EAGER strategy is a requirement on the persistence provider runtime that data must be eagerly fetched. The LAZY strategy is a hint to the persistence provider runtime that data should be fetched lazily when it is first accessed.

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

Тип получения официальной документации

Это сработало? Если этот ответ вам поможет, отметьте его как ответ. Спасибо. @divyau

Jonathan JOhx 18.01.2019 05:28

Другие вопросы по теме