Vorrei utilizzare l'UUID anziché l'ID normale su i miei modelli.UUID con Play Framework
Questo può essere fatto con la struttura di gioco?
Vorrei utilizzare l'UUID anziché l'ID normale su i miei modelli.UUID con Play Framework
Questo può essere fatto con la struttura di gioco?
Innanzitutto non estendere (play.db.jpa.Model) Modello nel modello a cui si desidera generare l'ID ma utilizzare GenericModel.
quindi è possibile utilizzare la classe helper che ha chiamato quando viene creato l'oggetto (nel costruttore).
o chiamare la classe di supporto quando viene salvato (quindi devo creare involucro DAO, il processo di salvataggio viene fatto in involucro DAO non in oggetto in modo che ho potuto generare id salvare l'oggetto)
o se si vuoi un approccio più semplice usa l'UUID JPA. Vedi il codice qui sotto.
@Entity
public class User extends GenericModel {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
public String id;
}
Bene, la classe Model è solo una sottoclasse di GenericModel che aggiunge l'attributo, i metodi e le annotazioni per fornire un Long generato come proprietà @Id per le classi del modello.
Se non si desidera ciò, è possibile creare sottoclasse GenericModel e fornire il proprio ID personale. Nel tuo caso quella sarebbe una stringa per contenere l'UUID. Tuttavia, dovrai trovare una strategia per inizializzarla su nuove istanze di modelli.
Non sono a conoscenza di una strategia integrata fornita da JPA per generare UUID. Un metodo semplice consiste nell'avere una classe helper su cui è possibile chiamare un metodo per ottenere un nuovo UUID e assicurarsi di chiamarlo ogni volta che si crea un nuovo modello.
GenericModel: non è un pattern anti? per favore vedi: http://en.wikipedia.org/wiki/BaseBean – Kowser
vedi il commento sulla wiki e la neutralità della wiki che dice "La neutralità di questo articolo è contestata", così chiamato questo anti-pattern in inappropriato. – indrap
sì, vedo così. Hai bisogno di studiare di più per chiarire il problema. – Kowser