java जावा: हाइबरनेट @OneToOne मैपिंग



hibernate jpa (1)

मैं हाइबरनेट @OneToOne एनोटेशन काम करने की कोशिश कर रहा हूं और यहां बहुत सफलता नहीं है ...

आइए मान लें कि मुझे ऐसी status मिली है जो इस तरह दिखती है:

+------------------------------------------------+
|                     status                     |
+------------------------------------------------+
| id | frn_user_id | frn_content_id |   status   |
+----+-------------+----------------+------------+
|  1 |     111     |        0       |  "active"  |
+----+-------------+----------------+------------+
|  2 |      0      |       222      | "inactive" |
+----+-------------+----------------+------------+

और मेरे पास User लिए एक इकाई है जो इस तरह दिखती है:

@Entity
@Table(name = "user")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", nullable = false)
    private Integer id;

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "userId")
    private Status status;

    // getters and setters
}

और Content लिए एक समान, और Status लिए एक और इकाई जो इस तरह दिखती है:

@Entity
@Table(name = "status")
public class Status {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", nullable = false)
    private Integer id;

    @Column(name = "frn_user_id")
    private Integer userId;

    @Column(name = "frn_content_id")
    private Integer contentId;

    @Column(name = "status")
    private String status;

    // getters and setters
}

जब मैं User पर पढ़ता हूं, तो मुझे उम्मीद है कि User.getStatus() id=1 साथ एक Status ऑब्जेक्ट वापस कर देगा। इसके बजाय, मुझे एनोटेशन अपवाद प्राप्त होता है: "संदर्भित संपत्ति नहीं है (एक | कई) ToOne: मैप में स्थिति.userIdBy User.status"

मैंने एसओ पर दस्तावेज़, ट्यूटोरियल और उदाहरणों के माध्यम से यहां डाला है, लेकिन अब तक जो कुछ भी मैंने कोशिश की है वह असफल रही है।

ध्यान देने योग्य भी: इसे एक-से-शून्य-या-एक रिश्ते का समर्थन करना चाहिए, क्योंकि कुछ user और content रिकॉर्ड में status तालिका में कोई संदर्भ नहीं होगा।

किसी भी तरह की सहायता का स्वागत किया जाएगा!


आपकी स्थिति इकाई में गुण उपयोगकर्ता नहीं होना चाहिए userId और contentId प्रकार का इंटीजर, @Column साथ मैप किया @Column । इसमें गुण user और content प्रकार उपयोगकर्ता और सामग्री होना चाहिए, @OneToOne साथ मैप किया @OneToOne :

public class User {
    @OneToOne(mappedBy = "user")
    private Status status;
    // ...
}

public class Status {
    @OneToOne
    @JoinColumn(name = "frn_user_id")
    private User user;
    // ...
}

एक उपयोगकर्ता की एक स्थिति है। एक स्थिति में एक उपयोगकर्ता है।





hibernate-annotations