Я пытаюсь создать объект json из моего объекта спящего режима, используя jackson, который можно отправить на удаленный url, используя трикотаж. Я не могу понять, как преобразовать объект спящего режима в объект json. Используя resteasy-jackson, я смог создать свой собственный веб-сервис, доступный через localhost, который корректно выводил мой json-объект на моем экране, но я надеялся построить объект json, не используя веб-сервис для собственного приложения. Возможно, я все по-другому? Я просто не хочу, чтобы вручную добавлять каждое свойство в объект json.Hibernate Entity to Json object with jackson to http post
То, что я пытался до сих пор,
интерфейс
@Path("/company")
public interface CompanyResource {
@GET
@Produces("application/json")
public List<Company> getAllDomains();
@POST
@Produces("application/json")
public Response post(Company company);
@GET
@Path("{id}")
@Produces("application/json")
public Company getDomainObject(@PathParam("id") Integer id);
}
класс
public List<Company> getAllDomains() {
return this.companyDAO.findAllCompanies();
}
public Response post(Company company) {
companyDAO.updateCompany(company);
return Response.ok().build();
}
public Company getDomainObject(@PathParam("id") Integer id) {
Company domainObject = this.companyDAO.findCompanyById(id);
if (domainObject == null) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
return domainObject;
}
почтовая служба
public void setupRender() throws GeneralSecurityException, UnsupportedEncodingException {
try {
Client client = Client.create();
String url = kayakoWebService.generateURL();
WebResource webResource = client.resource(url);
ClientResponse response = webResource.accept("application/json").get(ClientResponse.class);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
//Outputs object rather than json
System.out.println("test " + companyResource.getDomainObject(1));
} catch (Exception e) {
e.printStackTrace();
}
}
Company.class
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Company extends StatefulEntity {
@Validate("maxLength=50,required")
private String name;
@Column(nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Date createDate;
@Column(nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Date cancelDate;
@Column(nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Date modifyDate;
@ManyToOne
@JoinColumn(name="parent_id")
private Company parent;
@Column(nullable = true, length = 5)
private Integer roomUnitCount;
@Column(nullable = false, length = 8)
private String accountNumber;
@JsonIgnore
public String getAccountNumber() {
return accountNumber;
}
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
//additional getters setters
}
cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.datasource">jdbc/domain</property>
<property name="hbm2ddl.auto">validate</property>
<property name="hibernate.format_sql">false</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
<property name="hibernate.generate_statistics">true</property>
</session-factory>
</hibernate-configuration>
его не совершенно ясно, что ваша проблема. Где «companyResource» определен в вашем клиенте? Вы пытаетесь создать объект «Компания» на стороне клиента и использовать его в запросе POST на сервер? – Perception
@ Компания Pepception - объект сущности спящего режима, компания Resource - это не что иное, как служба, зарегистрированная здесь http://docs.codehaus.org/display/TYNAMO/tapestry-resteasy+guide#tapestry-resteasyguide-Createapackagenamedrestforyourrservices Я просто пытаюсь захватить определенный объект компании, преобразовать его в объект json и отправить его в удаленный домен, используя трикотаж. –
Можете ли вы предоставить класс компании и некоторые поддерживающие файлы. Каков ваш hb xml или где он определен. –