簡體   English   中英

Hibernate如何堅持

[英]How persist with Hibernate

我有一個名為“令牌請求者”和“證書”的類。 每個令牌請求者有許多證書,並且證書只有一個令牌請求者。

TokenRequestor.java

@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;

證書文件

@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為空。 為什么會這樣?

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-----"
    }
  ]
}

您的問題是將關系定義為雙向,這基本上意味着關系的每一側都應引用另一側。

假設我們有TokenRequestor對象,該對象有兩個證書,僅當關系是單向的(您可以將您的關系轉為解決此問題)時,這才足夠;對於雙向關系,您需要每個證書中的一個持有對其TokenReguestor的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM