खोज…


पैरामीटर

टिप्पणी उद्देश्य
@TableGenerator जनरेटर का नाम और तालिका नाम निर्दिष्ट करता है जहां जनरेटर पाया जा सकता है
@GeneratedValue पीढ़ी की रणनीति को निर्दिष्ट करता है और जनरेटर के नाम को संदर्भित करता है
@एक से एक कर्मचारी और डेस्क के बीच एक से एक संबंध निर्दिष्ट करता है, यहां कर्मचारी संबंध का मालिक है
mappedBy यह तत्व संबंध के रिवर्स साइड पर प्रदान किया जाता है। यह द्विदिश संबंध को सक्षम बनाता है

कर्मचारी और डेस्क के बीच एक से एक संबंध

कर्मचारी और डेस्क के बीच एक से एक द्विदिश संबंध पर विचार करें।

Employee.java

@Entity
public class Employee {

    @TableGenerator(name = "employee_gen", table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", allocationSize = 100)
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "employee_gen")
    private int idemployee;
    private String firstname;
    private String lastname;
    private String email;

    @OneToOne
    @JoinColumn(name = "iddesk")
    private Desk desk;

    // getters and setters    
}

Desk.java

@Entity
public class Desk {

    @TableGenerator(table = "id_gen", name = "desk_gen", pkColumnName = "gen_name", valueColumnName = "gen_value", allocationSize = 1)
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "desk_gen")
    private int iddesk;
    private int number;
    private String location;
    @OneToOne(mappedBy = "desk")
    private Employee employee;

    // getters and setters    
}

टेस्ट कोड

/* Create EntityManagerFactory */
    EntityManagerFactory emf = Persistence
            .createEntityManagerFactory("JPAExamples");

    /* Create EntityManager */
    EntityManager em = emf.createEntityManager();

    Employee employee;

    employee = new Employee();
    employee.setFirstname("pranil");
    employee.setLastname("gilda");
    employee.setEmail("sdfsdf");

    Desk desk = em.find(Desk.class, 1); // retrieves desk from database
    employee.setDesk(desk);

    em.persist(employee);

    desk = em.find(Desk.class, 1); // retrieves desk from database
    desk.setEmployee(employee);
    System.out.println(desk.getEmployee());

डेटाबेस आरेख को नीचे के रूप में दर्शाया गया है। यहाँ छवि विवरण दर्ज करें

  • @JoinColumn एनोटेशन उस इकाई की मैपिंग पर जाता है, जिसमें शामिल होने वाली तालिका में मैप किया जाता है। हमारे मामले में, एम्प्लॉई टेबल में जॉइन कॉलम है, इसलिए @ जॉइनकॉल्यूमेंट कर्मचारी इकाई के डेस्क फील्ड पर है।
  • मैप्डबॉय तत्व को इकाई में @OneToOne एसोसिएशन में निर्दिष्ट किया जाना चाहिए जो रिश्ते के रिवर्स साइड है। यानी वह इकाई जो डेटाबेस पहलू पर ज्वाइन कॉलम प्रदान नहीं करती है। हमारे मामले में, डेस्क व्युत्क्रम इकाई है।

पूरा उदाहरण यहां पाया जा सकता है



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow