수색…


매개 변수

주석 목적
@ 테이블 생성기 생성자를 찾을 수있는 생성자 이름과 테이블 이름을 지정합니다.
@ 생성 값 생성 전략을 지정하고 생성자의 이름을 나타냅니다.
@1-1 직원과 책상의 일대일 관계를 지정합니다. 여기서 Employee는 관계의 소유자입니다.
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 주석은 조인 colulmn을 포함하는 테이블로 맵핑되는 엔티티의 맵핑을 수행합니다. 관계 소유자. 여기서는 Employee 테이블에 조인 열이 있으므로 @JoinColumn 은 Employee 엔터티의 Desk 필드에 있습니다.
  • mappedBy 요소는 관계의 반대쪽 엔티티에서 @OneToOne 연관에 지정해야합니다. 즉 데이터베이스 측면에서 조인 열을 제공하지 않는 엔터티. 우리의 경우 Desk는 반대 엔티티입니다.

전체 예제는 여기 에서 찾을 수 있습니다 .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow