수색…
매개 변수
| 주석 | 목적 |
|---|---|
| @ 테이블 생성기 | 생성자를 찾을 수있는 생성자 이름과 테이블 이름을 지정합니다. |
| @ 생성 값 | 생성 전략을 지정하고 생성자의 이름을 나타냅니다. |
| @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
