java - why i can't persist object by openjpa? - incorrect validation -


in web applicaton use openjpa on apache tomcat (tomee)/7.0.37 server. use netbeans auto generate class ("entity class database..." , "session beans entity class...").

my user.class:

@entity @table(name = "user") @xmlrootelement @namedqueries({ @namedquery(name = "user.findall", query = "select u user u"), @namedquery(name = "user.findbyiduser", query = "select u user u u.iduser = :iduser"), @namedquery(name = "user.findbylogin", query = "select u user u u.login = :login"), @namedquery(name = "user.findbypassword", query = "select u user u u.password = :password")}) public class user implements serializable {  private static final long serialversionuid = 1l;    @id  @generatedvalue(strategy = generationtype.identity)  @basic(optional = false)  @notnull  @column(name = "id_user")  private short iduser;    @size(max = 8)  @column(name = "login")  private string login;  @size(max = 64)  @column(name = "password")  private string password;  @jointable(name = "user_has_roles", joincolumns = {     @joincolumn(name = "user_id", referencedcolumnname = "id_user")}, inversejoincolumns = {     @joincolumn(name = "roles_id", referencedcolumnname = "id_roles")})  @manytomany  private list<roles> roleslist;  @onetomany(cascade = cascadetype.all, mappedby = "user")  private list<lecturer> lecturerlist;  @onetomany(cascade = cascadetype.all, mappedby = "user")  private list<student> studentlist;  //constructors, getters, setters } 

when create new user managedbean:

private void adduser() {     user user = new user();         user.setlogin(registerlog);     user.setpassword(registerpass);     roles r = new roles();       r.setidroles(new short("2"));     list<roles> rolelist = new arraylist<roles>();     rolelist.add(r);             user.setroleslist(rolelist);           userfacade.create(user);  //<------here create abstract facade em.persist(user);  } 

i exception:

javax.el.elexception: javax.ejb.ejbexception: bean encountered non-application exception; nested exception is: javax.validation.constraintviolationexception: validation constraint failure occurred class "model.entity.user".  viewid=/pages/register.xhtml location=/home/jakub/projekty/collv2/build/web/pages/register.xhtml phaseid=invoke_application(5)  caused by:  javax.validation.constraintviolationexception - validation constraint failure occurred class "model.entity.user". @   org.apache.openjpa.persistence.validation.validatorimpl.validate(validatorimpl.java:282)  /pages/register.xhtml @ line 26 , column 104 action="#{registercontroller.register}" 

it's user id not correct. wrong ?

i think problem id generation type - generationtype.identity. when using identity special database column used generate id. id not generated until data inserted database , id not available entity until after commit. however, bean validation occurs on pre-persist callback using current state of entity. fail, because id still null.

i change generation type.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -