User
과 FileObject
클래스 사이에 다 대다 관계를 만들려고합니다. 사용자가 많은 파일 개체에 액세스 할 수 있고 파일 개체에 많은 사용자 및 일원이 액세스 할 수 있습니다. 한 사용자가 많은 파일을 소유 할 수 있지만 한 파일은 한 명의 사용자 만 소유 할 수 있기 때문에 다 대일 관계가됩니다. 여기 내 코드입니다 : 이론적으로JPA 다 대다 관계가 두 개의 조인 테이블을 만듭니다.
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
public int id;
public String firstname;
public String lastname;
public String publicAttributes;
public String privateAttributes;
@ManyToOne
private Department department;
@OneToMany(mappedBy = "user")
public List<Device> devices = new ArrayList<Device>();
@OneToMany(mappedBy = "userCreator")
public List <FileObject> fileOwned = new ArrayList <FileObject>();
@ManyToMany
@JoinTable(name="USER_FILE_ACCESS")
public List<FileObject> fileHasAccess = new ArrayList<FileObject>();
}
@Entity
public class FileObject {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
public int id;
String checksum;
@OneToMany(mappedBy = "fileObject")
public List<Policy> policies = new ArrayList<Policy>();
byte[] encryptedFileKey;
byte[] iv;
@ManyToOne
public User userCreator;
@ManyToMany
public List<User> listUserAccessor = new ArrayList<User>();
}
는 단 하나의 테이블, 즉 USER_FILE_ACCESS에 가입 만들어야하지만 내가 스크립트를 실행했을 때 그것은 두 개의 테이블을 조인 내가 왜 확실하지 않다 만듭니다.
show tables;
+------------------+
| Tables_in_cpabe |
+------------------+
| DEPARTMENT |
| DEVICE |
| FILEOBJECT |
| FILEOBJECT_USER |
| POLICY |
| SEQUENCE |
| USER |
| USER_FILE_ACCESS |
+------------------+
show columns from FILEOBJECT_USER;
+---------------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+---------+------+-----+---------+-------+
| FileObject_ID | int(11) | NO | PRI | NULL | |
| listUserAccessor_ID | int(11) | NO | PRI | NULL | |
+---------------------+---------+------+-----+---------+-------+
show columns from USER_FILE_ACCESS;
+------------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------+------+-----+---------+-------+
| User_ID | int(11) | NO | PRI | NULL | |
| fileHasAccess_ID | int(11) | NO | PRI | NULL | |
+------------------+---------+------+-----+---------+-------+
가 어떻게 하나 개의 테이블로 테이블에 가입해야합니까 : 여기
는 SQL 명령의 발췌입니까? 그런 다음 양방향 관계를 갖고 싶어
두 번째 @ManyToMany에 조인 테이블/매핑자가 없습니다. 어쩌면 그것을 봐야한다 – XtremeBaumer
@XtremeBaumer 내가 조인 된 테이블의 다른 쪽에서 사용할 수있는 몇 가지 예를 보았다. 주석이 필요 없다. CMIIW –