Hi, All!
I have a very simple table with some data columns and a kind of timestamp column with "sysdate" default value defined:
Code:
package me.hibernate.bean;
import org.hibernate.Session;
import java.util.List;
public class LogApplication {
private String lolParameters;
public String getLolParameters() {
return lolParameters;
}
public void setLolParameters(String lolParameters) {
this.lolParameters = lolParameters;
}
private java.util.Date lolDate;
public java.util.Date getLolDate() {
return lolDate;
}
public void setLolDate(java.util.Date lolDate) {
this.lolDate = lolDate;
}
private String lolPlace;
public String getLolPlace() {
return lolPlace;
}
public void setLolPlace(String lolPlace) {
this.lolPlace = lolPlace;
}
private Integer lolCod;
public Integer getLolCod() {
return lolCod;
}
public void setLolCod(Integer lolCod) {
this.lolCod = lolCod;
}
private String lolUtiCod;
public String getLolUtiCod() {
return lolUtiCod;
}
public void setLolUtiCod(String lolUtiCod) {
this.lolUtiCod = lolUtiCod;
}
}
The mapping is:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="me.hibernate.bean.LogApplication" table="LOG_APPLICATION">
<id name="lolCod" column="LOL_COD">
<generator class="sequence">
<param name="sequence">S_LOG_APPLICATION</param>
</generator>
</id>
<property name="lolParameters" column="LOL_PARAMETERS" />
<property name="lolDate">
<column name="LOL_DATE" default="sysdate" />
</property>
<property name="lolPlace" column="LOL_PLACE" />
<property name="lolUtiCod" column="LOL_UTI_COD" />
</class>
</hibernate-mapping>
My problem that Hibernate doesn't see default value defined for lolDate column. When I try to insert any line into this table it generates me an SQL like:
Code:
insert into LOG_APPLICATION (LOL_PARAMETERS, LOL_DATE, LOL_PLACE, LOL_UTI_COD, LOL_COD) values (?, ?, ?, ?, ?)
followed by exception
Code:
ORA-01400: cannot insert NULL into ("ME"."LOG_APPLICATION"."LOL_DATE").
If I omit lolDate property in mapping, insert works, but of course java field is not mapped.
Or I can use
Code:
<property name="lolDate" column="LOL_DATE" insert="false" />
, but in this case I'll not be able to change lolDate value if I don't want to use a default one.
How should I write my mapping ?
Thank you, AK.