Modification d'un champ en base de données
Bonjour,
je travaille actuellement sur un projet de gestion de prêt en j2ee, et j'ai un problème avec la modification d'un champs en base de données:
quand mon produit revient de prêt et mauvais état je l'envoie en réparation et voici ce que mon code fait:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| public void assignLoanEntryToRepair(int loanEntryId, String assignBy) {
LoanEntryEntity loanEntryEntity = em.find(LoanEntryEntity.class, loanEntryId);
if (loanEntryEntity == null)
throw new NullPointerException("product");
returnProduct(assignBy, loanEntryEntity);
List<InputRequestEntity> inputRequests = loanEntryEntity.getProduct().getInputRequest();
inputRequests.get(inputRequests.size() - 1).setDoit(false);
loanEntryEntity.setRepair(true);
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| private void returnProduct(String returnBy, LoanEntryEntity loanEntryEntity) {
final ProductEntity product = loanEntryEntity.getProduct();
em.lock(product, LockModeType.WRITE);
if (product.isValidationLock())
return;
loanEntryEntity.setReturned(true);
InputRequestEntity inputRequest = new InputRequestEntity();
inputRequest.setProduct(product);
inputRequest.setDoit(true);
em.persist(inputRequest);
em.flush();
product.getInputRequest().add(inputRequest);
} |
Et lorsque le produit est réparé on le sort de réparation:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public void outOfRepair(int loanEntryId, String author) {
LoanEntryEntity loanEntryEntity = em.find(LoanEntryEntity.class, loanEntryId);
if (loanEntryEntity == null)
throw new NullPointerException("product");
ProductEntity product = loanEntryEntity.getProduct();
em.lock(product, LockModeType.READ);
if (product.isValidationLock())
return;
List<InputRequestEntity> inputRequests = product.getInputRequest();
inputRequests.get(inputRequests.size() - 1).setDoit(true);
loanEntryEntity.setRepair(false);
} |
J'ai un problème avec ma sortie de réparation (OutOfRepair), lors de ma sortie de réparation le champs "doit" en base ne prends pas la valeur "true" (setDoit="true") et je ne comprends pas ce qui se passe , surtout que lorsque mon produit est réparé en moins de 2h et donc est sorti de l'état "repair", le champs doit prend bien la valeur "true" mais quelques heures après lors de la sortie il ne prend plus cette valeur "true".
Merci pour vos éclairages.
The method is undefined for the type EntityManager
Bonjour romain,
Pourquoi le faire sur lonEntryEntity ?? vu que je n'arrive pas a modifier inputRequetEntity je ne devrais pas plutôt faire un update sur inputRequests vu que c'est lui qui ne modifie pas la valeur de son champs doit??
La méthode update n'est pas définie dans l' EntityManager, et si j'essayais avec merge()??
merci.