I do not like idea of keeping defaults both in database and application. If I have a not nullable database field with some default value, besides setting default value in database I use 'before insert' table trigger that checks if supplied value is NULL and sets it to the desired value.
Well, I believe database vendors should treat not-null fields with default values in that way saving me from writing those tedious triggers ;) On Wed, Mar 18, 2009 at 9:00 AM, Alex Sherwin <alex.sher...@acadiasoft.com>wrote: > What I ususally do: > > > public String getStatus() { > return null == status ? "Some Default Value" : status; > > } > > > Alin Popa wrote: > >> Thanks Nicholoz, >> >> This is what I've done. And I also have a facade that will abstract >> for the user, the insert actions. >> I thought that ibatis knows how to handle this, or have a trick for it. >> >> On Wed, Mar 18, 2009 at 10:51 AM, Nicholoz Koka Kiknadze >> <kikna...@gmail.com> wrote: >> >> >>> Why don't you just exclude this field in the <insert>? >>>> >>>> >>> <insert id="insertExampleWithDefaults" parameterClass="com.test. >>> Example"> >>> INSERT INTO vjobs(name, description) VALUES >>> (#name#,#description#) >>> </insert> >>> >>> GL >>> >>> >>> >>> IMO because sometimes one need to insert NULL values too. So why don't >>> you >>> add another insert statement to your xml that will omit the status field? >>> >>> On Wed, Mar 18, 2009 at 4:19 AM, Kengkaj Sathianpantarit >>> <kengka...@gmail.com> wrote: >>> >>> >>>> However, I think that default value is good in the case that we don't >>>> need >>>> to specify value in INSERT command. >>>> Why don't you just exclude this field in the <insert>? >>>> >>>> For <update>, I think that we should specify value explicitly in the >>>> model, error from database is correct behavior in case the field has >>>> null >>>> value (actually this is the reason why we set NOT NULL constraint). >>>> >>>> Kengkaj >>>> >>>> >>>> On Wed, Mar 18, 2009 at 3:06 PM, Alin Popa <alin.p...@gmail.com> wrote: >>>> >>>> >>>>> Thanks Kengkaj, >>>>> >>>>> But from what I read it seems that nullValue is used to substitute >>>>> value with a database NULL. >>>>> The thing is that I'm not allowed to use null since field is "NOT >>>>> NULL". >>>>> >>>>> >>>>> On Wed, Mar 18, 2009 at 6:00 AM, Kengkaj Sathianpantarit >>>>> <kengka...@gmail.com> wrote: >>>>> >>>>> >>>>>> Use null value replacement feature, read user manual. >>>>>> >>>>>> Kengkaj >>>>>> >>>>>> On Tue, Mar 17, 2009 at 10:37 PM, Alin Popa <alin.p...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I have the following db table (MySQL): >>>>>>> >>>>>>> CREATE TABLE `examples`( >>>>>>> `id` SERIAL PRIMARY KEY, >>>>>>> `name` VARCHAR(255), >>>>>>> `status` VARCHAR(20) NOT NULL DEFAULT 'ready', >>>>>>> `description` TEXT >>>>>>> ) ENGINE=innodb DEFAULT CHARSET utf8 DEFAULT COLLATE utf8_bin; >>>>>>> >>>>>>> >>>>>>> Using ibatis sql-map I'm doing this: >>>>>>> >>>>>>> <insert id="insertExample" parameterClass="com.test.Example"> >>>>>>> INSERT INTO vjobs(name, status, description) VALUES >>>>>>> (#name#,#status#,#description#) >>>>>>> </insert> >>>>>>> >>>>>>> When inserting an example object, without having "status" field set, >>>>>>> I >>>>>>> got Column 'status' cannot be null; but the DEFAULT is 'ready'. >>>>>>> >>>>>>> How can this be managed using ibatis ? >>>>>>> It is possible ? >>>>>>> >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> Alin >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Best Regards, >>>>> >>>>> Alin >>>>> >>>>> >>>> >>> >> >> >> >> >> > > >