Trong hầu hết mọi mối quan hệ, độc lập của mã nguồn và mục tiêu bên, một trong hai bên sẽ có tham gia cột trong bảng của mình. Bên đó được gọi là các sở hữu sideor ownerof mối quan hệ. Bên không có cột tham gia ở đây được gọi là phía bên phòng không sở hữu hoặc nghịch đảo. Chủ sở hữu tàu là impor ý lập bản đồ vì chú thích vật lý mà xác định ánh xạ để Các cột trong cơ sở dữ liệu (ví dụ, @JoinColumn) luôn luôn được xác định bên sở hữu của các mối quan hệ. Nếu họ không có, các giá trị được cài đặt sẵn từ quan điểm của các thuộc tính trên các sở hữu bên. Nhiều một ánh xạ luôn luôn bên sở hữu của một mối quan hệ, do đó, nếu có một @JoinColumnto được tìm thấy trong mối quan hệ có một mặt nhiều một, đó là nơi nó sẽ được đặt. Để chỉ định tên của các cột tham gia, các yếu tố tên được sử dụng. Ví dụ, các @JoinColumn (tên = "DEPT_ID") chú thích có nghĩa là DEPT_IDcolumn trong nguồn thực thể bảng là chìa khóa nước ngoài để bảng mục tiêu tổ chức, các tổ chức bất cứ điều gì mục tiêu của mối quan hệ sẽ xảy ra để. Nếu không có @JoinColumnannotation đi kèm với bản đồ nhiều một, một tên cột mặc định sẽ được giả định. Tên được sử dụng như mặc định được hình thành từ sự kết hợp của cả hai nguồn và mục tiêu thực thể. Nó là tên của thuộc tính mối quan hệ trong thực nguồn, có thể là departmentin Ví dụ của chúng tôi, cộng với một dưới điểm e char acter (_), cộng với tên của các cột chính quan trọng của mục tiêu entity. So if the Departmententity were mapped to a table that had a primary key column named ID, the join column in the EMPLOYEEtable would be assumed to be named DEPARTMENT_ID. If this is not actually the name of the column, the @JoinColumnannotation must be defined to override the default. Going back to Figure 4-10, the foreign key column is named DEPT_IDinstead of the defaulted DEPARTMENT_IDcolumn name. Listing 4-17 shows the @JoinColumnannotation being used to override the join column name to be DEPT_ID.
đang được dịch, vui lòng đợi..
