Hibernate: невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено - PullRequest
0 голосов
/ 09 апреля 2011

эта ошибка выдает мне, когда я пытаюсь вставить (сохранить) пользователя, используя hibernate:

//SQL
DROP TABLE IF EXISTS `bytecodete`.`account_confirmation`;
CREATE TABLE  `bytecodete`.`account_confirmation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(255) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  KEY `FK_account_confirmation_1` (`email`),
  CONSTRAINT `FK_account_confirmation_1` FOREIGN KEY (`email`) REFERENCES `user` (`email`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;



// HIBERNATE
@Entity
@Table(name = "account_confirmation", catalog = "bytecodete")
public class AccountConfirmation implements java.io.Serializable {

    private Integer id;
    private User user;

    public AccountConfirmation() {
    }

    public AccountConfirmation(User user) {
        this.user = user;
    }

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "email", nullable = false)
    public User getUser() {
        return this.user;
    }

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

Сначала я вставляю объект 'user' в базу данных, затем пытаюсь вставить этого пользователя в эту таблицу 'account_confirmation', но это невозможно ... Я действительно не понимаю, почему это происходит.

Есть идеи?

EDIT: // LOG4J

Hibernate: 
    insert 
    into
        bytecodete.user
        (email, password, type) 
    values
        (?, ?, ?)
Hibernate: 
    insert 
    into
        bytecodete.person
        (birthDate, cpf, gender, idFacebook, name, tokenFacebook, idUser) 
    values
        (?, ?, ?, ?, ?, ?, ?)
Hibernate: 
    insert 
    into
        bytecodete.account_confirmation
        (email) 
    values
        (?)
18:45:40,745  WARN JDBCExceptionReporter:77 - SQL Error: 1452, SQLState: 23000
18:45:40,746 ERROR JDBCExceptionReporter:78 - Cannot add or update a child row: a foreign key constraint fails (`bytecodete`.`account_confirmation`, CONSTRAINT `FK_account_confirmation_1` FOREIGN KEY (`email`) REFERENCES `user` (`email`) ON DELETE CASCADE ON UPDATE CASCADE)

С уважением, Вальтер Энрике.

1 Ответ

0 голосов
/ 14 апреля 2011

Сохраняете ли вы подтверждение пользователя и учетной записи в одном сеансе?Это двунаправленное отношение или просто однонаправленное?(Может быть, вы также должны опубликовать содержимое класса пользователя)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...