Tutoriel du gestionnaire d'entités : mise à jour et suppression d'entrées à l'aide d'un index

Vous pouvez utiliser un index pour rechercher, mettre à jour et supprimer des entités.

Procédure

Mettez à jour et supprimez des entités à l'aide d'un index. Utilisez un index pour rechercher, mettre à jour et supprimer des entités. Dans les exemples suivants, la classe de l'entité Order est mise à jour afin d'utiliser l'annotation @Index. L'annotation @Index signale à WebSphere eXtreme Scale de créer un index d'intervalles pour un attribut. Le nom de l'index est identique au nom de l'attribut et l'index est toujours de type MapRangeIndex.
Order.java
@Entity
public class Order {
    @Id String orderNumber;
    @Index java.util.Date date;
    @OneToOne(cascade=CascadeType.PERSIST) Customer customer;
    @OneToMany(cascade=CascadeType.ALL, mappedBy="order") 
				@OrderBy("lineNumber") List<OrderLine> lines;  } 
L'exemple suivant montre l'annulation de toutes les commandes soumises au cours de la dernière minute. Recherchez la commande à l'aide d'un index, replacez les articles de la commande en stock et supprimez la commande ainsi que les articles de la ligne associée du système.
public static void cancelOrdersUsingIndex(Session s) 
		throws ObjectGridException {
    // Annulez toutes les commandes soumises il y a une minute.
    java.util.Date cancelTime = new 
			java.util.Date(System.currentTimeMillis() - 60000);
    EntityManager em = s.getEntityManager();
    em.getTransaction().begin();
    MapRangeIndex dateIndex = (MapRangeIndex) 
			s.getMap("Order").getIndex("date");
    Iterator<Tuple> orderKeys = dateIndex.findGreaterEqual(cancelTime);     
		while(orderKeys.hasNext()) {         
			Tuple orderKey = orderKeys.next();         
			// Recherchez la commande à supprimer.         
			Order curOrder = (Order) em.find(Order.class, orderKey);         
			// Vérifiez que la commande n'a pas été mise à jour par une autre personne.         
			if(curOrder != null && curOrder.date.getTime() >= cancelTime.getTime()) {
				for(OrderLine line : curOrder.lines) {                 
					// Replacez l'article en stock.                 
					line.item.quantityOnHand += line.quantity;                 
					line.quantity = 0;             
				}             
			em.remove(curOrder);         
			}     
		}     
	em.getTransaction().commit(); 
}