[hibernate-issues] [Hibernate-JIRA] Closed: (HV-13) Bug on the Oracle dialect : empty String is authorized whereas the field is declared as not-null.
Max Rydahl Andersen (JIRA)
noreply at atlassian.com
Tue Apr 17 06:11:04 EDT 2007
[ http://opensource.atlassian.com/projects/hibernate/browse/HV-13?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Max Rydahl Andersen closed HV-13.
---------------------------------
Resolution: Rejected
Oracle db has the wrong assumption that "" is equal to null; but that is not true - even within their own db (select * from table where column = '' won't return null columns)
> Bug on the Oracle dialect : empty String is authorized whereas the field is declared as not-null.
> -------------------------------------------------------------------------------------------------
>
> Key: HV-13
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HV-13
> Project: Hibernate Validator
> Issue Type: Bug
> Environment: Hibernate version :3.1.2
> Hibernate dialect : org.hibernate.dialect.OracleDialect
> Database : Oracle 10g
> Reporter: Fabien PERIE
> Priority: Minor
> Original Estimate: 2 hours
> Remaining Estimate: 2 hours
>
> Hello,
> The purpose of this example is to show a bug with the Oracle dialect.
> I use Hibernate 3.1.2 !
> I define a POJO in a mapping file :
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
> <hibernate-mapping package="fr.modele">
> <class name="Person" table="PERS">
> <!-- Identifiant de la personne -->
> <id name="idPerson" type="string" unsaved-value="null">
> <column name="PERS_IDEN" sql-type="char(12)" not-null="true"/>
> <generator class="sequence">
> <param name="sequence">pers.pers_seq_iden</param>
> </generator>
> </id>
> <property name="name" column="PERS_NAME" not-null="true" />
> <property name="firstName" column="PERS_FIRSTNAME"/>
> </class>
> </hibernate-mapping>
> Detail Person Java object :
> import fr.modele;
> import java.io.Serializable;
> public class Person implements Serializable {
> private String idPerson;
> private String name;
> private String firstName;
> /**
> * Constructeur par défaut.
> */
> public Person() {
> }
> public Serializable getId() {
> return idPerson;
> }
>
> public void setId(Serializable id) {
> this.idPerson = (String)id;
> }
> public String getIdPerson() {
> return idPerson;
> }
>
> public void setIdPerson(String idPerson) {
> this.idPerson = idPerson;
> }
>
> public String getName() {
> return name;
> }
>
> public void setName(String name) {
> this.name = name;
> }
> public String getFirstName() {
> return firstName;
> }
>
> public void setFirstName(String firstName) {
> this.firstName = firstName;
> }
> }
> If I try to save an objet which contains the following informations :
> * idPerson : 1
> * name : null
> * nickName : Jim
> Hibernate 3 logically returns the error : «
> fr.org.springframework.orm.hibernate3.HibernateSystemException: not-null property references a null or
> transient value: fr.modele.Person.name; nested exception is org.hibernate.PropertyValueException:
> not-null property references a null or transient value: fr.modele.Person.name ».
> But, if I persist an object which has an empty String instead of null value in the name attribute,
> Hibernate 3 does not return an error. (!!!)
> I think that the problem comes of the Oracle dialect object because Oracle does not make the difference between
> an empty String and a null value.
> Thanks,
> Fabien PERIE.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list