jerseyを使用してリモートURLに投稿できるjacksonを使用して、休止状態のエンティティからjsonオブジェクトを作成しようとしています。休止状態のエンティティを json オブジェクトに変換する方法がわかりません。resteasy-jackson を使用して、localhost からアクセスできる独自の Web サービスを作成し、画面内で json オブジェクトを正しく出力できましたが、自分のアプリに Web サービスを使用せずに json オブジェクトを構築したいと考えていました。おそらく、私はこれについてすべて間違った方法で進んでいますか?すべてのプロパティをjsonオブジェクトに手動で追加する必要はありません。
私がこれまでに試したことは、
インターフェース
@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.クラス
@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>