gpt4 book ai didi

java - 在 REST 和 hibernate 中检索详细信息时出现 406 错误

转载 作者:行者123 更新时间:2023-12-02 11:03:36 26 4
gpt4 key购买 nike

我正在尝试使用 REST 和 hibernate 获取 XML 中的国家/地区详细信息。但是当点击下面的 URL 时,我得到了错误。我已将请求中接受的 header 正确设置为 xml。

The resource identified by this request is only capable of generating 
responses with characteristics not acceptable according to the request
"accept" headers.

Controller

@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;
}

型号

@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 List<Country> getAllCountries() {
return countryDao.getAllCountries();
}

DAO

public List<Country> getAllCountries() {
Session session = this.sessionFactory.getCurrentSession();
List<Country> countryList = session.createQuery("from Country").list();
return countryList;
}

有人可以帮忙吗..

最佳答案

使用spring推荐jackson-dataformat-xml图书馆 pom.xml 。只要存在 JAXB 库(内置于 JDK >= 1.6 中),即使没有 XML 注释,它也会自动为您进行 XML 转换。但是,您可以使用 @JacksonXml..注释为您的 xml 提供所需的结构。

为了在这里达到预期的结果,我将创建一个包装类并更新我的 Controller ,如下所示:

//pom.xml
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>

//wrapper class
@JacksonXmlRootElement(localName = "countries")
@Data //lombok
@AllArgsConstructor //lombok
public class Countries {

@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "country")
private List<Country> countries;

}

//controller
@RequestMapping(value = "/getAllCountries", method = RequestMethod.GET)
public Object getCountries() throws CustomerNotFoundException{
return new Countries(countryService.getAllCountries());
}

注意:此处不需要 XML 包装器类。 Spring 可以很好地使用 <List><Items> 进行默认的数组转换。 ,但建议根据所需的结构调整 XML。

关于java - 在 REST 和 hibernate 中检索详细信息时出现 406 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51148231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com