Hibernate manipulation de nullable=true dans la Colonne @

Je suis de l'utilisation d'Hibernate avec des Ressorts soutenu par une base Mysql.

Ici est l'entité qui est similaire à celui que j'utilise pour faire une entrée

@Entity
@Table(name = "my_table") {

    @Basic
    @Column(name = "my_string", nullable = false)
    private String myString;
}

La définition sql est

CREATE TABLE `my_table` (
 `my_string` varchar(200) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Si la table autorise les valeurs null, la colonne machaine est non nullable que par la JPA annotation. Cela conduit à des comportements imprévisibles.

Q: Est-ce le non nullable TOUJOURS appliquées au niveau de l'entité tout en faisant des semelles? Ou bien il y a certains cas dans lesquels il peut être ignoré

Mon attente est que toutes les entrées ont été rejetées. Mais avec cette configuration, le nombre d'entrées (>7000) ont disparu dans la table.
Seulement parfois, je reçois un DataIntegrityViolation exception de printemps

org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: ...; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: ....
    at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:652)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:104)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:403)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58) 
    ....  
    ....
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: ....
    at org.hibernate.engine.internal.Nullability.checkNullability(Nullability.java:103)
    ....

Je comprends que le fait d'avoir séparé la signature de l'entité et la table est une mauvaise pratique, Mais je vais essayer d'identifier quelles sont les causes de ce comportement et de toutes les autres lacunes qui pourraient avoir été laissé de côté à cause d'elle.

Versions -
Mysql- 5.5
Hibernate - 4.0.0
Hibernate-jpa - 2.0
Spring-core- 3.1.0
Spring-jdbc- 3.1.2
Il peut être un choix personnel en raison de certaines règles métiers spécifiques, autrement, nous devrions toujours garder colonne de table et de champ entity du chèque ou de la contrainte comportement même parce que c'est commun que notre tableau peut être consulté par d'autres applications et/ou directement des scripts sql ainsi lorsque ces contraintes d'application de la règle échoue, je ne suis pas sûr de quelque chose de semblable a l'origine de ce problème pour vous.
J'ai oublié, tout en faisant de l'entité à l'origine. J'ai corrigé maintenant. Mais je suis sûr qu'aucun autre script ou une application accède à cette table. Donc, je veux savoir comment quelque chose comme cela pourrait se produire.

OriginalL'auteur gap_j | 2014-06-02