2016-12-27 4 views
0

:それは他のもののために、このエラーを返し、その後休止状態:理由OneToOne関係にPERSISTのすべてのエンティティを保存しないCascadeType.ALL下のプロパティを使用して

@Entity 
@Table(name = "b") 
public class B extends AbstractEntity implements Serializable, Comparable<B>, Cloneable { 
    ... 
    @JsonBackReference 
    @OneToOne 
    @JoinColumn(name ="a_id") 
    @Cascade(value = { CascadeType.ALL }) 
    private A an; 
} 

@Entity 
@Table(name = "a") 
public class A implements Serializable{ 
    @Id 
    @Column(name="a_id") 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @OneToOne(mappedBy = "a", fetch = FetchType.LAZY, orphanRemoval = true) 
    private B b; 
} 

それは、最初のエンティティを保存します。

org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: A; nested exception is org.hibernate.PersistentObjectException: detached entity passed to persist: A 

私はPERSISTに精通していません。私はCascadeType.MERGEまたはCascadeType.SAVE_UPDATEだけを使用して問題を解決できるかどうかはわかりませんが、彼らは働いていましたが、永続性を修正する方法を知りたいと思います。

+0

補足として:mappedBy = "an" '、' mappedBy = "a" 'ではありません。 – crizzis

答えて

0

どのようにセーブやエンティティを試しますか? "SaveOrUpdate"メソッドまたは "Persist"を呼び出すことによって?

+0

By the Persist。 –

+0

最初にエンティティを保存するために "Persist"が使用されているようです。 SaveOrUpdateは、エンティティがすでに作成された後で呼び出すことができます。私はあなたの代わりに "SaveOrUpdate"メソッドを呼び出さなければならないと思う。 – Morgan

+0

CascadeType.ALLは両方を行うはずがありませんか?とにかく、クラス内で@PrePersistを使用するとどうなりますか? –

関連する問題