Bonjour,
J'essaie d'utiliser Hibernate pour la première fois, et naturellement, je rencontre un problème :-)
Mon application, un cas d'école, est très simple :
- Hibernate v3
- java 1.6
- MySQL 5
Juste une seule table en BD :
Code:
CREATE TABLE `indications_flash` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`definition` tinytext NOT NULL,
PRIMARY KEY(`id`)
)
ENGINE=INNODB;
Programatiquement, dans le code java, j'aimerai réalisé un select avec un lock (méthode "pessimistic") tel que décrit ici :
Code:
List<IndicationFlash> data = session.createQuery("from IndicationFlash").list();
for (IndicationFlash dd : data)
{
session.lock(dd, LockMode.UPGRADE);
.....
}
Je lance 2 instances de cette petite application.
- La première instance démarre immédiatement et fonctionne parfaitement bien.
- La seconde instance démarre, attend (longtemps) sur l'instruction lock et produit une exception org.hibernate.exception.GenericJDBCException: could not lock:....
Voici ma question : Comment puis-je obtenir "immédiatement" cette Exception pour ma seconde instance ? Concrètement, j'aimerai pouvoir disposer d'un timeout de lock proche de 0 (naturellement sans changer aucunement la configuration de mon serveur MySQL).
Autre idée : comment puis-je tester si un lock existe ?
Mon objectif est de pouvoir afficher de suite un message à l'utilisateur sans lui faire attendre la longue période précédent le timeout du lock.
Merci par avance pour vos réponses.
A. HAMEL.