java - ActiveJDBC: save() generates insert only for auto-generated primary key? -


i started using activejdbc. have following table (postgresql)

create table users (     id                   uuid primary key,     email                text unique not null,     password             text,     <some more nullable columns>     created_at           timestamp time zone not null default (now() @ time zone 'utc'),     updated_at           timestamp time zone ); 

as can see, primary key of type uuid , has no auto-generate value of kind.

this user class models table :

public class user extends model {     public user() {         setid(uuid.randomuuid());  // sets value primary key     } ... } 

this attempt create new row , insert :

    user u = new user();     system.out.println(u.saveit()); 

actually, expected insert fail, since did not set value mandatory email column. however, got false return value. when turned on logging, saw framework generated update sql instead of insert:

[main] info org.javalite.activejdbc.db - query: "update users set email = ?, ..., updated_at = ? id = ?", parameters: <null>, <null>, <null>, <null>, <null>, <null>, <null>, <2016-01-07 17:30:46.025>, <0621fbdb-5b95-4ee7-a474-8ee9165e2982>, took: 1 milliseconds 

so looked @ save() method inside org.javalite.activejdbc.model class , saw piece of code:

    if (getid() == null) {         result = insert();     } else {         result = update();     } 

does mean id column has empty in order insert generated ? if true unacceptable, must missing something.

@sharonbn, please, see documentation page: http://javalite.io/surrogate_primary_keys. activejdbc depends on autogenerated ids. if id == null, frameworks assumes new record, , generates insert statement. if non-null, assumed record exists, , generates update.

in case, need explicitly call user.insert() instead of user.saveit(). 'expert' mode in cases when developers want in control of id management. further, method user.update() private. insert new record, calling

user.insert();

and updates:

user.save(); // or: user.saveit();

, depending on want.


Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

css - Can I use the :after pseudo-element on an input field? -