В моем проекте Spring REST и Hibernate. Я хочу отобразить ответ в формате xml, но независимо от идентификатора, который я передаю в URL, я получаю неправильный ответ xml, как показано ниже:
<COUNTRY id="0">
<population>0</population>
</COUNTRY>
URL, который я нажал:
http://localhost:8080/SpringRestHibernateExample/getCountry/2
После отладки я обнаружил, что идентификатор корректно передается до уровня DAO, а также выбирается правильная страна. Как-то рендеринг не происходит правильно.
Вот мои занятия
Контроллер
@RequestMapping(value = "/getCountry/{id}", method = RequestMethod.GET,
headers = "Accept=application/xml",
produces="application/xml")
public Country getCountryById(@PathVariable int id) {
return countryService.getCountry(id);
}
Модель
@XmlRootElement (name = "COUNTRY")
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Table(name="COUNTRY")
public class Country{
@XmlAttribute
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
int id;
@XmlElement
@Column(name="countryName")
String countryName;
@XmlElement
@Column(name="population")
long population;
public Country() {
super();
}
Услуги
@Transactional
public Country getCountry(int id) {
System.out.println("service"+id);
return countryDao.getCountry(id);
}
DAO
public Country getCountry(int id) {
System.out.println("dao"+id);
Session session = this.sessionFactory.getCurrentSession();
Country country = (Country) session.load(Country.class, new Integer(id));
return country;
}
Может кто-нибудь помочь, пожалуйста ...
РЕДАКТИРОВАТЬ: замена нагрузки на get решить проблему. Но теперь для / getAllCountries я получаю следующую ошибку:
The resource identified by this request is only capable of generating
responses with characteristics not acceptable according to the request
"accept" headers.
Ниже находится контроллер
@RequestMapping(value = "/getAllCountries", method =
RequestMethod.GET,produces="application/xml",
headers = "Accept=application/xml")
public List<Country> getCountries() throws CustomerNotFoundException{
List<Country> listOfCountries = countryService.getAllCountries();
return listOfCountries;
}