使用MySQL进行休眠:在添加第二个表后插入值时,字段没有默认值

时间:2016-08-12 10:18:27

标签: java mysql hibernate

我有一个Java程序,它使用Hibernate与MySQL DB交互,有两个表,User和Status。

因为我只有User Table,所以一切正常,但现在我添加了Status表,现在我在插入testdata时遇到以下异常,但是现在对于这两个表虽然我没有更改User表中的任何内容:

Could not update entity of typ User
    Aug 12, 2016 11:37:01 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
    WARN: SQL Error: 1364, SQLState: HY000
    Aug 12, 2016 11:37:01 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
    ERROR: Field 'status_statusId' doesn't have a default value
    Aug 12, 2016 11:37:01 AM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
    INFO: HHH000010: On release of batch it still contained JDBC statements

Could not update entity of typ Status
Aug 12, 2016 11:37:01 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
        WARN: SQL Error: 1364, SQLState: HY000
        Aug 12, 2016 11:37:01 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
        ERROR: Field 'user_email' doesn't have a default value
        Aug 12, 2016 11:37:01 AM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
        INFO: HHH000010: On release of batch it still contained JDBC statements

以下是带有注释和变量的实体类的摘录:

用户:

@Entity
@Table(name = "user")
public class User implements Serializable {

    @PrePersist
    void preInsert() {
        email = "test@testmail.com";
    }

    @Id
    @Column(name = "user_email")
    private String email;

状态:

@Entity
@Table(name = "status")
public class Status implements Serializable {

    @PrePersist
    void preInsert() {
        statusId = "A01A001";
    }

    @Id
    @Column(name = "status_statusId")
    private String statusId;

对我来说看起来像某种NOT NULL问题,但我使用了@PrePersist注释来确保两个实体都有默认值。

我搜索了一些解决方案,其中没有一个工作,就像这一个:mysql error 1364 Field doesn't have a default values

他们建议更改mysql设置并删除my.cnf中的STRICT_TRANS_TABLES。但我找不到这个文件所以我尝试了phpmyadmin解决方案。 他们说你应该在那里编辑sql模式变量并删除STRICT_TRANS_TABLES值,但是当我尝试编辑这个变量时它没有值:

SQL Mode Variable Image

有人知道另一个解决方案吗?非常感谢每一个有用的答案。

0 个答案:

没有答案