我已經按照這個tuto爲我的項目(https://cloud.google.com/developers/articles/how-to-build-mobile-app-with-app-engine-backend-tutorial),並且一切工作正常。谷歌端點,物化和持久
但是,當我想爲我的實體使用objectify類時,它不起作用,我無法使用我的android應用程序檢索數據存儲區上的數據!
例如,該代碼也沒關係,我可以從我的Android應用程序獲取我的用戶回來:
import javax.jdo.annotations.Index;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Index
public class Utilisateur {
//Nos variables de classes
@Id String num_portable; //Clé pour notre entité NOTION CLE PRIMAIRE String car c'est à nous de le définir.
Boolean sexe;
int date_naissance;
String position_geo;
String liste_contact;
Boolean blacklistage;
//Constructeur par défaut (Obligatoire pour Objectify)
private Utilisateur(){}
public Utilisateur (String num_portable, Boolean sexe, int date_naissance, String position_geo, String liste_contact, Boolean blacklistage) {
this.num_portable=num_portable;
this.sexe=sexe;
this.date_naissance=date_naissance;
this.position_geo=position_geo;
this.liste_contact=liste_contact;
this.blacklistage=blacklistage;
}
public String getNum_portable() {
return num_portable;
}
}
但我不使用物化。當我想用物化,與該代碼,它不工作: 我只是將這段代碼:
import javax.jdo.annotations.Index;
import javax.persistence.Entity;
import javax.persistence.Id;
有了這一個:
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Index;
,我得到我的應用程序引擎這樣的錯誤:
com.google.api.server.spi.SystemService invokeServiceMethod: Class Utilisateur for query has not been resolved. Check the query and any imports/aliases specification
javax.persistence.PersistenceException: Class Utilisateur for query has not been resolved. Check the query and any imports/aliases specification
所以我的問題是:我們可以用物化與Android應用程序或數據持久與它(和應用程序引擎)不工作?
編輯:這是對我的Android應用程序(如這裏=>https://cloud.google.com/developers/articles/how-to-build-mobile-app-with-app-engine-backend-tutorial相同的代碼)調用後端我的代碼:
public class JeveuxvoirActivity extends Activity {
private ListView utilisateursList;
private List<Utilisateur> utilisateurs = null;
//Création de notre activité
public void onCreate(Bundle savedInstanceState) {
//Création de notre interface graphique
super.onCreate(savedInstanceState);
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//On définit le Layout de notre activité
setContentView(R.layout.activity_jeveuxvoir);
utilisateursList = (ListView) findViewById(R.id.list_principal_user);
// start retrieving the list of nearby places
new ListOfUtilisateursAsyncRetriever().execute();
}
//*******************************************************
// FONCTIONS ASYNC
//*******************************************************
/**
* AsyncTask for retrieving the list of places (e.g., stores) and updating the
* corresponding results list.
*/
private class ListOfUtilisateursAsyncRetriever extends AsyncTask<Void, Void, CollectionResponseUtilisateur> {
@Override
protected CollectionResponseUtilisateur doInBackground(Void... params) {
Utilisateurendpoint.Builder endpointBuilder = new Utilisateurendpoint.Builder(
AndroidHttp.newCompatibleTransport(), new JacksonFactory(), null);
endpointBuilder = CloudEndpointUtils.updateBuilder(endpointBuilder);
CollectionResponseUtilisateur result;
Utilisateurendpoint endpoint = endpointBuilder.build();
try {
result = endpoint.listUtilisateur().execute();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result = null;
}
return result;
}
@Override
@SuppressWarnings("null")
protected void onPostExecute(CollectionResponseUtilisateur result) {
ListAdapter utilisateursListAdapter = createUtilisateurListAdapter(result.getItems());
utilisateursList.setAdapter(utilisateursListAdapter);
utilisateurs = result.getItems();
}
}
private ListAdapter createUtilisateurListAdapter(List<Utilisateur> utilisateurs) {
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
for (Utilisateur utilisateur : utilisateurs) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("utilisateurIcon", R.drawable.ic_launcher);
map.put("utilisateurPort", utilisateur.getNumPortable());
data.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(JeveuxvoirActivity.this, data, R.layout.utilisateur_item,
new String[] {"utilisateurIcon", "utilisateurPort"},
new int[] {R.id.utilisateur_Icon, R.id.utilisateur_port});
return adapter;
}
嗨,Objectify是專爲AppEngine數據存儲,所以它應該工作,無論你如何訪問你的端點(Android,Web應用程序等)。你可以在你做出客觀化查詢的地方提供代碼片段嗎? – user3355018
另外,可以肯定的是,您是否已通過Objectify註冊了'Utilisateur'類?請參閱https://code.google.com/p/objectify-appengine/wiki/Entities#Registering_Entities – user3355018