Как обновить таблицы отношений один-к-одному? - PullRequest
0 голосов
/ 17 января 2019

Интересно, как полностью обновить таблицы отношений один-к-одному с помощью метода JPA save ().

Я пытался использовать дочернюю таблицу метода JPA save () для обновления некоторых данных в дочерние и родительские таблицы.

Тогда я ожидал обновления двух таблиц (дочерних и родительских). Но были обновлены родительская таблица и вставлена ​​дочерняя таблица.

// parent Entity
@Entity
public class Parent {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(nullable = false)
    private String title;
    @Column(nullable = false)
    private String content;
    @OneToOne(mappedBy = "parent", cascade = CascadeType.ALL)
    @JoinColumn(name = "parent_id")
    private Children children;
}

// children Entity
public class Children {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(nullabel = false)
    private String picture;
    @OneToOne
    private Parent parent;
}

// Parent Table
id | title | content
1  | "..."| "..."

// Children Table
id | picture  | parent_id
1  | "..."     | 1



// Service
childrenRepository.save(childrenEntity);


// Result 
Updated Parent Tables;
-----------------------
id | title     | content
1  | "updated!"| "updated!"



Inserted Children Tables;
-----------------------
id | picture      | parent_id
1  | "..."        | 1
2  | "inserted!"  | 1     <---- This is not my purpose.




// The below's my purpose it.

Updated Children Tables;
-----------------------
id | picture           | parent_id
1  | "updated!"        | 1

1 Ответ

0 голосов
/ 17 января 2019

Ваша аннотация для Children выглядит неверно.

@OneToOne(mappedBy = "children", cascade = CascadeType.ALL)
private Children children;

Должно быть:

@OneToOne(mappedBy = "parent", cascade = CascadeType.ALL)
private Children children;

Если отношение является двунаправленным, не владеющая сторона должна использовать элемент mappedBy аннотации OneToOne для указания поле отношения или свойство владеющей стороны

Документы Oracle

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