私は、データベースを他の何よりもインターフェースするジャージーベース(JAX-RS)のWebサービスを持っています。Accountは、他のすべての種類の明白なものの中で、Addressの埋め込み配列( @XmlRootElementでもマークされている)を含むオブジェクトです。
@XmlRootElement
public class Account
{
ObjectId oid;
String name;
String email;
...
ArrayList< Address > addresses;
}
@XmlRootElement
public class Address
{
String street;
String city;
...
}
読み取り操作では、データベースから、(Eclipseで検査されたように)内部にアドレスが入力されたアカウントを取得します。それらを発信者に返すと(以下のReSTサービスコードを参照)、すべてのアカウントフィールドが表示されますが、アドレスは表示されません。リクエストを行い、その結果を確認するために、ChromeのSimpleRESTクライアント拡張機能を使用しています。
{
"oid":"4fe252a73cc58a6da34eb11f",
"name":"Yosemite Sam",
"email":"sam@warnerbros.com"
(but no addresses)
}
ジャージーが「{“ oid”:”…」、“ name”:” Yosemite Sam”、“ email”:” sam@warnerbros.com”、“ addresss”:[{“ street”:”17のようなものを返すことを期待していましたMariposa Way」、「city」:「LosAngeles」、...}、{…}、{…}]}」。
ジャージーがここでやっていないかもしれないことと、それをだましてそれをやらせる方法に誰かが光を当てることができますか?
たくさんの感謝、
ラスベイトマン
AccountService.java:
import javax.ws.rs.*;
...
@POST
@Path( "/find" )
@Produces( { "application/json", "application/xml" } )
public Response read( Account account )
{
Account result;
try
{
result = accountManager.readByEmailOrOid( account );
}
catch( AppException e )
{
return e.buildResponse();
}
catch( RuntimeException e )
{
return AppException.buildRuntimeResponse( e );
}
return Response.ok( result ).build(); // result has addresses, but they don't show up!
}