![](/img/trans.png)
[英]Get DB object from JDO/DataNucleus and MongoDB with a String _id
[英]Create new object from two tables JDO DataNucleus
我試圖通過使用DataNucleus持久化兩個類來創建DTO對象。
我希望創建的DTO:
@PersistenceAware
DtoObject{
Protected String Id; //populated by Order class
Protected String status; //populated by Order class
Protected String phoneNumber; //populated by Customer class
Protected String address; //populated by Customer class
}
The Objects:
@PersistenceCapable
@FetchGroup(name="dto", members = {@Persistent(name = "Id"),
@Persistent(name="status")})
public Class Order{
@PrimaryKey
@Persistent
private String Id;
@Persistent
private String status;
@Persistent
private Customer customer;
}
@PersistenceCapable
@FechGroup(name="dto", members = { @Persistent(name = "phoneNumber"),
@Peristent(name="address") })
public Class Customer{
@PrimaryKey
@Persistent
private String Id;
@Persistent
private String phoneNumber;
@Persistent
private string Address;
}
JDODL:
Query q = pm.newQuery(Order.class);
pm.getFetchPlan().setGroup("dto");
q.setUnique(true);
q.setFilter("Id == id");
q.declareParameters("String id");
q.setResultClass(DtoObject.class);
DtoObject dto = (DtoObject)q.execute(id);
我可以使用映射到Order.class的屬性填充dto對象,但不能從Customer.class獲取屬性。 Data Nucleus加入表並從每個表中選擇適當的列,但保留phoneNumber = null和address = null;
有關如何通過一個查詢實現此功能的指針將不勝感激。
Query q = pm.newQuery("SELECT UNIQUE this.id, this.status, " +
" this.customer.phoneNumber, this.customer.address INTO " +
DtoObject.class.getName() +
" FROM " + Order.class.getName() + " WHERE this.id = :id");
DtoObject dto = (DtoObject)q.execute(idParam);
假設結果類(DtoObject)符合結果類的條件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.