2010-06-25 3 views
2

J'ai essayé de porter une application tomcat/mysql sur Google App Engine. Je suis un peu accroché à l'obtention des valeurs clés des objets que je viens de persister. Existe-t-il un moyen d'obtenir la valeur Key de l'objet persistant? Est-ce que quelqu'un a un code en Java qui peut montrer comment faire cela?Java App Engine Get Auto Généré Valeur de clé

Merci, Eric

Répondre

0

répondre Pas exactement, mais ...

Ids ne sont apparemment pas retardée jusqu'à ce que vous vous engagez la transaction. Je suis passé à générer moi-même des identifiants de chaînes aléatoires pour mes objets GAE avant de les sauvegarder.

+0

Ouais j'espérais qu'il y aurait une API pour retourner cette valeur quand elle est validée, mais je n'ai rien trouvé pour ça. –

2

Je pense que vous aurez besoin de poster un échantillon de code avant de pouvoir vous dire ce que vous faites mal. J'ai une Entité avec un type d'ID de Long, et l'identifiant est rempli après que j'appelle makePersistent(). Voici ce que le code ressemble à:

GameEntity game = new GameEntity(); 
    log.warning("before makePersistent id is " + game.getId()); 
    pm.makePersistent(game); 
    log.warning("after makePersistent id is " + game.getId()); 

Voici un extrait de la classe GameEntity:

@PersistenceCapable(identityType = IdentityType.APPLICATION) 
public class GameEntity { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Long id; 

Et la sortie montre ce que vous attendez:

WARNING 6428 - before makePersistent id is null 
WARNING 6444 - after makePersistent id is 6 

MISE À JOUR: Il m'est apparu tardivement que vous pourriez vouloir un objet clé réel. Vous pouvez créer vous-même si vous avez l'ID:

public Key getKey() { 
    return KeyFactory.createKey(GameEntity.class.getSimpleName(), id); 
} 
+0

C'est exactement ce que je cherche merci –

Questions connexes