Вопрос:

@OneToOne - Каскадировать все, не сохраняя родительский идентификатор

hibernate hibernate-cascade

876 просмотра

1 ответ

3 Репутация автора

ребята! У меня проблема с сохранением идентификатора родительской таблицы "child". При сохранении дочернего объекта столбец с идентификатором parent равен null.

Родитель (класс пользователя)

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

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

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private long userId;

@Column(name = "name")
private String name;

@Column(name = "address")
private String address;

@Column(name = "postcode")
private int postCode;

Ребенок (Учетный класс)

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;


@Entity
@Table(name="credential")
public class Credentials {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private int id;

@Column(name="username")
private String username;

@Column(name="password")
private String password;


@OneToOne(cascade= CascadeType.ALL )
@JoinColumn(name="user_id")
public User user;

Класс приложения

    User user = new User();

    user.setAddress("asdkapoda");
    user.setName("xaxaxaxa");
    user.setPostCode(3423);

    Credentials credit = new Credentials();
    credit.setPassword("sadsad");
    credit.setUsername("sdadsa");
    session.save(credit);   

А в базе данных Credential находится с user_id = NULL . Hibernate 4.3

Автор: FBMtrader Fbmtrader Источник Размещён: 22.08.2016 09:18

Ответы (1)


1 плюс

4049 Репутация автора

Hibernate добросовестно сохраняет тот факт, что вы на самом деле никогда не связывали Credentialsобъект с Userобъектом. Попробуйте добавить credit.setUser(user);перед сохранением.

Автор: Douglas Размещён: 22.08.2016 09:23
Вопросы из категории :
32x32