4

ここに私のテーブルがあります:

CREATE TABLE `admin_log` (
  `LOG_ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `USER_ID` bigint(20) NOT NULL,
  `CREATION_DATE` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `ACTION` varchar(100) NOT NULL,
  `DETAILS` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`LOG_ID`),
  KEY `ADMIN_LOG_FK1` (`USER_ID`),
  CONSTRAINT `ADMIN_LOG_FK1` FOREIGN KEY (`USER_ID`) REFERENCES `user_master` (`USER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

そして、ここに私のエンティティがあります:

@Entity
@Table ( name = "admin_log" )
public class AdminLog {

    private Long            logId;
    private UserMaster      user;
    ...

    @Id
    @GeneratedValue ( strategy = IDENTITY )
    @Column ( name = "LOG_ID", unique = true, nullable = false, length = 20 )
    public Long getLogId () {
        return logId;
    }

    public void setLogId ( Long logId ) {
        this.logId = logId;
    }

    @ManyToOne
    @JoinColumn ( name = "USER_ID" )
    public UserMaster getUser () {
        return user;
    }

    public void setUser ( UserMaster user ) {
        this.user = user;
    }
    ...
}


@Entity
@Table ( name = "user_master" )
public class UserMaster {

    private Long        userId;
    ...

    @Id
    @GeneratedValue ( strategy = IDENTITY )
    @Column ( name = "USER_ID", unique = true, nullable = false, length = 20 )
    public Long getUserId () {
        return this.userId;
    }

    public void setUserId ( Long userId ) {
        this.userId = userId;
    }
    ...
}

from メソッドをAdminLog使用して保存しようとすると、次のエラーが発生します。save()HibernateTemplate

SEVERE: Column 'USER_ID' cannot be null
org.springframework.dao.DataIntegrityViolationException: could not insert [...AdminLog];
SQL [insert into admin_log (ACTION, CREATION_DATE, DETAILS, USER_ID) values (?, ?, ?, ?)];
constraint [null] nested exception is org.hibernate.exception.ConstraintViolationException: could not insert: [...AdminLog]

問題は、userId間違いなく NOT null です! Hibernate が のプロパティuserIdから取得できないようです。私は何を間違っていますか?userAdminLog

4

2 に答える 2

2

の一時的なインスタンスを保存しようとしていますUserMaster。オブジェクトのがある場合は、保存する前idに最初にロードしてオブジェクトに設定する必要があります。AdminLog

于 2013-02-07T19:34:09.647 に答える
1

固執するUserMaster前に固執しなければならないAdminLog

于 2013-02-07T18:25:08.263 に答える