サーチ…
パラメーター
注釈 | 目的 |
---|---|
@TableGenerator | ジェネレータが見つかるジェネレータ名とテーブル名を指定します。 |
@GeneratedValue | 生成戦略を指定し、ジェネレータの名前を参照します。 |
@OneToOne | 従業員と机の間の1対1の関係を指定します。ここで、従業員は関係の所有者です |
mappedBy | この要素は関係の裏側にあります。これにより、双方向関係 |
従業員と机の1対1の関係
従業員と机の間に1対1の双方向関係があるとします。
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アノテーションは、ジョイン・コラムを含むテーブルにマップされるエンティティのマッピングを行います。関係の所有者。私の場合、EmployeeテーブルにはJoinカラムがあり、 @ JoinColumnはEmployeeエンティティのDeskフィールドにあります。
- mappedBy要素は、関係の反対側のエンティティの@OneToOne関連で指定する必要があります。すなわち、データベースのアスペクトで結合列を提供しないエンティティ。私たちの場合、デスクは逆のエンティティです。
完全な例はここにあります
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow