why does hibernate try mislay i try update/insert?


in app i have hibernate-mapped forms (general case):



class rolerule {
private purpose role;
private permissionawareentity entity; // hibernate-mapped entity assent granted
private permissiontype permissiontype; // enum

@manytoone
@joincolumn(name = "role_id")
open purpose getrole() {
relapse role;
}
open vacant setrole(role role) {
this.role = role;
}

}

class purpose {
private set<rolerule> manners = new hashset<rolerule>(0);

@onetomany(cascade=cascadetype.all)
@joincolumn(name="role_id")
open set<rolerule> getrules() {
relapse rules;
}
open vacant setrules(set<rolerule> rules) {
this.rules = rules;
}

}


all classes have equals() & hashcode() overrides.



my concentration allows tweaking roles (by sysadmins only, don't worry), among fields, allows origination new purpose rules. new order combined i try emanate new rolerule vigilant insert role's domain rules. i session.update(role) ask changes database.



now comes dizzy part... hibernate decides following shutting transaction flushing:




  1. insert new order database. excellent.

  2. update purpose fields (not collections). distant good.

  3. update existent rules, even zero altered them. i live this.

  4. update existent manners again. here's brew log, including involuntary comment:



/* mislay one-to-many quarrel role.rules */
update role_rule set role_id=null where role_id=? role_rule_id=?


of course, fields not-null, operation fails spectacularly.



can anyone try explain since hibernate this??? even some-more important, frak i around this???



edit: i certain something mapping, following boss, whim, deleted equals() hashcode() both classes, recreated controlling eclipse, mysteriously solved problem.



i'm still unequivocally extraordinary doubt though. anyone advise since hibernate this?



Comments

Popular posts from this blog

list macos calm editors formula editors

how hibernate @any-related annotations?

using mvc, should hoop communication between views? between models?