Sök…


parametrar

Anteckning Ändamål
@TableGenerator Anger generatornamn och tabellnamn där generator kan hittas
@GeneratedValue Anger generationsstrategi och hänvisar till namnet på generator
@En till en Anger en till en relation mellan anställd och skrivbord, här är anställd ägare till relationen
mappedBy Detta element tillhandahålls på baksidan av relationen. Detta möjliggör dubbelriktad relation

En till en relation mellan anställd och skrivbord

Tänk på en dubbelriktad relation mellan anställd och skrivbord.

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    
}

Testkod

/* 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());

Databasdiagram visas som nedan. ange bildbeskrivning här

  • @JoinColumn- anteckningen fortsätter med att kartlägga den enhet som är mappad till tabellen som innehåller kopplingen colulmn. Ägaren av relationen. I vårt fall har medarbetartabellen kolumnen Sammanfoga@JoinColumn finns på skrivbordsfältet för anställds enhet.
  • Elementet mappedBy bör specificeras i @OneToOne- föreningen i den enhet som vänder mot sidan av relationen. dvs Den enhet som inte tillhandahåller en kolumn om databasaspekt. I vårt fall är Desk den omvända enheten.

Komplett exempel finns här



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow