opike
opike

Reputation: 7585

Trying to specify default value for property in hibernate

I'm getting the following error message from hibernate when attempting to insert a row into a table:

org.hibernate.exception.ConstraintViolationException: Column 'priority' cannot be null

I know that I could put a line into the code to set the value but there are many other instances where the program relies on the default value in the database (db is mysql).

I read somewhere that you can provide a default value in the hbm.xml file but hibernate is not recognizing it. Here's the corresponding section from JobQueue.hbm.xml

    <property name="priority" type="integer">
        <column name="priority" default="0" />
    </property> 

I suppose another option would be to modify the JobQueue.java file that gets generated (I'm using eclipse hibernate tools to auto generate the hibernate classes) but for now I'd like to try to get the hbm.xml configuration to work.

I'm using version 4.1.3 of the hibernate libraries and eclipse hibernate tools 3.4.0.x.

Upvotes: 0

Views: 11309

Answers (3)

Paulo Fidalgo
Paulo Fidalgo

Reputation: 22331

Unless you are not able to recreate the whole database schema, you can set the default value in the variable initialization. In your model set the priority to 0 in the initialization.

In your class:

private Integer priority = 0;

Upvotes: 3

opike
opike

Reputation: 7585

I ended up modifying the JobQueue.java POJO to set the default value. To make sure that the Code Generation of hibernate tools wouldn't overwrite this change, I set it up so that the code generation generates the files in a temp folder and then the necessary files are copied over to the permanent source location.

Upvotes: 0

Firo
Firo

Reputation: 30813

default="0" is only relevant for SchemaExport which generates the database schema. other than that hibernate completely ignores this setting. you could try to set not-null="true" for the column.

Upvotes: 3

Related Questions