jOOQ 3.3 will hopefully be released next week. jOOQ 3.2.4 within 3-4 weeks
2014-02-04 Markus Merzinger <[email protected]>: > > Hi Lukas! > > And thank you! > > When do you think this fix will be released? > > > > On Tuesday, February 4, 2014 11:10:35 AM UTC+1, Lukas Eder wrote: > >> Hello, >> >> Yes, unfortunately, you've run into this issue here: >> https://github.com/jOOQ/jOOQ/issues/2700 >> >> We're hoping to get this fixed in jOOQ 3.3 and 3.2.4 >> >> Cheers >> Lukas >> >> >> 2014-02-04 <[email protected]>: >> >>> >>> We are evaluating jooq for our application and want to use the *POJO/DAO >>> pattern* in favor of the Record pattern (bean validation annotations, >>> jruby integration) >>> >>> As I was writing tests I had the following situation: >>> >>> My DB (*Postgres*) table DDL is: >>> >>> CREATE TABLE users >>> ( >>> id serial NOT NULL, >>> account_id integer NOT NULL, >>> email character varying(255) NOT NULL, >>> username character varying(255) NOT NULL, >>> locale character varying(255) NOT NULL *DEFAULT 'en'::character >>> varying*, >>> time_zone character varying(255) NOT NULL *DEFAULT 'UTC'::character >>> varying*, >>> first_name character varying(255), >>> last_name character varying(255), >>> [...] >>> CONSTRAINT users_pkey PRIMARY KEY (id ) >>> ) >>> WITH ( >>> OIDS=FALSE >>> ); >>> >>> >>> >>> As can see the column "locale" (besides others) has a *default value*. >>> >>> The generated POJO method is: >>> >>> >>> @javax.persistence.Column(name = "locale", nullable = >>> false, length = 255) >>> @javax.validation.constraints.NotNull >>> @javax.validation.constraints.Size(max = 255) >>> public java.lang.String getLocale() { >>> return this.locale; >>> } >>> >>> >>> When I want to insert a user now: >>> >>> Users user = new Users(); >>> >>> user.setCreatedAt(now()); >>> user.setUpdatedAt(now()); >>> // setting not null fields >>> *//* user.setLocale("en"); -- *this is commented out, so user.locale >>> has to be null, DB column default should be used * >>> usersDao.insert(user); >>> >>> >>> >>> So as you can see I do not want to set the locale. Because there is a >>> *default >>> value* defined in the DDL. >>> >>> But calling this results in: >>> >>> org.jooq.exception.DataAccessException: SQL [insert into >>> "public"."users" ("account_id", "email", "username", "locale", "time_zone", >>> "first_name", "last_name", "company_name", "deactivated_at", "created_at", >>> "updated_at", "encrypted_password", "reset_password_token", >>> "reset_password_sent_at", "remember_created_at", "sign_in_count", >>> "current_sign_in_at", "last_sign_in_at", "current_sign_in_ip", >>> "last_sign_in_ip", "authentication_token", "confirmation_token", >>> "confirmed_at", "confirmation_sent_at", "unconfirmed_email", >>> "failed_attempts", "unlock_token", "locked_at", "avatar", "uuid", >>> "avatar_updated_at", "avatar_crop_w", "avatar_crop_h", "avatar_crop_x", >>> "avatar_crop_y", "signed_up_as", "welcome_wizard_hide", "list_newsletter", >>> "referring_url", "landing_url") values (?, ?, ?, ?, ?, ?, ?, ?, cast(? as >>> timestamp), cast(? as timestamp), cast(? as timestamp), ?, ?, cast(? as >>> timestamp), cast(? as timestamp), ?, cast(? as timestamp), cast(? as >>> timestamp), ?, ?, ?, ?, cast(? as timestamp), cast(? as timestamp), ?, ?, >>> ?, cast(? as timestamp), ?, ?, cast(? as timestamp), ?, ?, ?, ?, ?, ?, ?, >>> ?, ?) returning "public"."users"."id"]; ERROR: *null value in column >>> "locale" violates not-null constraint* >>> at org.jooq.impl.Utils.translate(Utils.java:1211) >>> >>> >>> As it seems to me, jooq forces the "null" value for the insert. So the >>> DB has no chance to use the default value. >>> >>> >>> - Is that a wished behavior? >>> - Or am I doing something wrong? >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "jOOQ User Group" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "jOOQ User Group" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "jOOQ User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
