2017-06-05 5 views
0

"Token Requestor"と "Certificates"というクラスがあります。各トークンリクエスタには多くの証明書と証明書があり、は1つだけトークンリクエスタです。 TokenRequestor.javaHibernateとの関係

@Entity 
@Table(name = "TOKEN_REQUESTOR") 
public class TokenRequestor implements Serializable { 

    @Id 
    @SequenceGenerator(name = "TOKEN_REQUESTOR_ID_GENERATOR", sequenceName = "TOKEN_REQUESTOR_ID") 
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "TOKEN_REQUESTOR_ID_GENERATOR") 
    @Column(name = "TOKEN_REQUESTOR_ID") 
    private Long id; 
    @OneToMany(mappedBy = "tokenRequestorId") 
    private List<Certificate> certificates; 

Certificate.java

@Entity 
@Table(name = "CERTIFICATES") 
public class Certificate { 

    @Id 
    @SequenceGenerator(name = "CERTIFICATES_ID_GENERATOR", sequenceName = "SQ_CERTIFICATES_ID") 
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "CERTIFICATES_ID_GENERATOR") 
    @Column(name = "CERTIFICATES_ID") 
    private Long id; 
    @ManyToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL) 
    @JoinColumn(name = "TOKEN_REQUESTOR_ID") 
    private TokenRequestor tokenRequestorId; //Foreign key*/ 

私はトークンリクエスタを挿入

、彼らは証明書を作成しなければなりません。これらは作成されますが、証明書テーブルではTOKEN_REQUESTOR_IDがnullです。なぜこれが起こるのですか?

POSTトークンリクエスタ

{ 
    "domain": "GTW", 
    ..., 
    "certificates": [ 
    { 
     "usage": "ENC", 
     "alias": "encryption_cert", 
     "content": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----" 
    }, 
    { 
     "usage": "DEC", 
     "alias": "decryption_cert", 
     "content": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----" 
    }, 
    { 
     "usage": "SSL", 
     "alias": "communication_cert", 
     "content": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----" 
    }, 
    { 
     "usage": "CA", 
     "alias": "TSP ROOT CA", 
     "content": "-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----" 
    } 
    ] 
} 

答えて

1

あなたの問題は、基本的に関係のそれぞれの側が反対側への参照を持つべきであることを意味する、双方向であることを関係を定義することです。

このオブジェクトには2つの証明書があります。これは、リレーションが一方向(この問題を解決するためにあなたの関係をbtwに変えることができる)の場合にのみ十分であり、必要な双方向リレーション証明書の1つがTokenReguestorへの参照を保持しています。

+0

私は/ tokenRequestorリソースと/ certificatesリソースを持っています。両方のリソースで証明書を作成できます。この場合、単方向関係が解決されますか? –

+0

@DanielaMorais再試行し、証明書にTokenRequestorを挿入するか、ManyToOne(およびその参照)を削除して関係を単方向にし、joinColumnをnone owningentity(ここでOneToMany)に設定するか、 –