0
自己を参照する「カテゴリ」エンティティがあります。自己参照エンティティは2つのレコードを挿入します
@Entity
public class Category extends NamedEntity {
private String slug;
private int position;
@ManyToOne(cascade = { CascadeType.PERSIST })
private Category parent;
@OneToMany(mappedBy = "parent")
private Set<Category> children = new HashSet<Category>();
... getters/setters ...
私は親を持たないエンティティを保存すると、それは「2」レコードを挿入します。
を| ID | NAME | POSITION | SLUG | PARENT_ID |
| 1 | 1 | 1 | 1 | 2 |
| 2 | null | 0 | null | null |
PARENT_IDがnullの "one"レコードを挿入したかったのですが、レコード(id = 2)とレコード(id = 1)を子として挿入します。
public interface CategoryRepository extends Repository<Category, Long> {
public Category findById(Long id) throws DataAccessException;
public Category save(Category category) throws DataAccessException;
}
カスケードオプションを削除すると、 '' TransientPropertyValueException''例外が発生します。だから私は '' 'CascadeType.PERSIST'''を入れます。 例外の説明は、 '' 'オブジェクトが未保存の一時インスタンスを参照しています - beforeQuery flushing'''の一時インスタンスを保存します。 ありがとうございます。 – nasiajai
値を 'null'に明示的に設定しても不平を言ってはいけません。 – Naros
私はそれが同じ結果になると言わなければならないので、すみません。 – nasiajai