Zoeken…


parameters

aantekening Doel
@TableGenerator Hiermee geeft u de naam van de generator en de tabel op waar de generator kan worden gevonden
@GeneratedValue Specificeert de generatiestrategie en verwijst naar de naam van de generator
@Een op een Specificeert een op een relatie tussen medewerker en bureau, hier is Werknemer de eigenaar van de relatie
mappedBy Dit element wordt aan de achterzijde van de relatie verschaft. Dit maakt bidirectionele relatie mogelijk

Eén op één relatie tussen medewerker en bureau

Overweeg een een-op-een bidirectionele relatie tussen medewerker en bureau.

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    
}

Testcode

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

Databasediagram wordt hieronder weergegeven. voer hier de afbeeldingsbeschrijving in

  • De annotatie @JoinColumn gaat door met het in kaart brengen van de entiteit die is toegewezen aan de tabel met de join-colulmn.De eigenaar van de relatie. In ons geval heeft de tabel Werknemer de kolom Toevoegen, zodat @JoinColumn zich in het veld Bureau van de entiteit Werknemer bevindt.
  • Het element mappedBy moet worden opgegeven in de koppeling @OneToOne in de entiteit die de keerzijde van de relatie omkeert. dat wil zeggen De entiteit die geen join-kolom voor het database-aspect biedt. In ons geval is Desk de omgekeerde entiteit.

Compleet voorbeeld is te vinden hier



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow