Salve, premetto che sono nuovo all'utilizzo di Hibernate e poco esperto in genere per quanto riguarda l'interfacciamento con i database.
Vengo al nocciolo, in pratica io creo un record, ne setto l'ID e subito dopo lo rendo persistente in memoria (successivamente sarà salvato nel DB). Il problema è che io ne imposto l'ID ma subito dopo la save() questo ID viene modificato e non ne capisco il motivo.
Vi posto il codice di creazione della tabella MySql e subito a seguire il frammento di codice nel quale si verifica l'anomalia.
TABELLA MYSQL:
FRAMMENTO DI CODICE:codice:-- ----------------------------------------------------- -- Table `phoenix`.`patient` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `phoenix`.`patient` ( `id_patient` INT NOT NULL AUTO_INCREMENT , `p_birthday` DATE NULL , `p_sex` VARCHAR(1) NULL , `id_p_ethnic_group` INT NULL , PRIMARY KEY (`id_patient`) ) ENGINE = InnoDB;
In pratica, alla prima System.out l'ID è corretto, mentre alla seconda l'ID è stato modificato da Hibernate.codice:PatientDAO patientDAO = new PatientDAO(); Patient patient = patientDAO.findById(patientID); if (patient == null) { patient = new Patient(); patient.setIdPatient(patientID); System.out.println("Patient ID: " + patient.getIdPatient()); String sex = null; for (VariableEvaluatedNetworkNodeType exam : exams) { if (exam.getLocalName().equalsIgnoreCase( "sex")) { sex = (exam.getValue() == 0.0 ? "m" : "f"); break; } } patient.setPSex(sex); } ss.save(patient); System.out.println("Patient ID after save(): " + patient.getIdPatient());
Se qualcuno sapesse aiutarmi gliene sarei grato!

Rispondi quotando