Est-il possible de charger un objet dans Hibernate sans écrire une requête ou d'avoir une carte d'identité?

StackOverflow https://stackoverflow.com/questions/3630450

  •  26-09-2019
  •  | 
  •  

Question

Je peux persister un objet dans le DB de Java en tant que tel:

Tableau personne:

varchar name  
varchar groupID  
varchar emailAddress  
key on (name, groupID)

Et en Java

Person foo = new Person("dhackner", "3");  
session.persist(foo);

Les deux arguments constituent la clé. Dans ce cas, le nom et groupID sont la clé unique dans la base de données, et donc suffisante pour identifier distinctement une ligne dans le tableau (peut avoir plusieurs entrées « dhackner », plusieurs « groupe 3 » entrées, mais un seul « dhackner, groupe 3" entrée).

En supposant la configuration correcte, ce code entraînera avec succès dans

    name | groupID | emailAddress  
dhackner |       3 |           ""

Je voudrais pouvoir faire l'inverse de ce sans écrire une requête ou d'utiliser des ID générées automatiquement:

Tableau personne:

    name | groupID | emailAddress  
dhackner |       3 |  "something"  
dhackner |       4 |     "foobar"  
   other |       3 |     "barfoo"

En Java:

Person foo = new Person("dhackner", "3");  
foo.load(); // something like this
Assert.assertEquals(foo.getEmailAddress(), "something");
Était-ce utile?

La solution

Oui, il y a, il est appelé requête par exemple il est assez simple en veille prolongée:

Person foo = new Person("dhackner", "3");
foo = session.createCriteria(Person.class).add(Example.create(foo)).uniqueResult();
Assert.assertEquals(foo.getEmailAddress(), "something");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top