Java 许多人只坚持一方

Java 许多人只坚持一方,java,spring,jpa,many-to-many,Java,Spring,Jpa,Many To Many,我有一个与许多人有关的表格User和收音机,如下表所示。在这种关系中,只有方法saveUser会保留在关系表中。概括地说,只有占主导地位的一方被持久化在USER和RADIO_USER表中。我如何坚持另一面 表用户: +--------------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Def

我有一个与许多人有关的表格User和收音机,如下表所示。在这种关系中,只有方法
saveUser
会保留在关系表中。概括地说,只有占主导地位的一方被持久化在USER和RADIO_USER表中。我如何坚持另一面

表用户:

+--------------------+--------------+------+-----+-------------------+----------------+
| Field              | Type         | Null | Key | Default           | Extra          |
+--------------------+--------------+------+-----+-------------------+----------------+
| user_account_id    | bigint(20)   | NO   | PRI | NULL              | auto_increment |
| name               | varchar(255) | YES  |     | NULL              |                |
+--------------------+--------------+------+-----+-------------------+----------------+
桌上广播:

+-----------------------+---------------+------+-----+-------------------+----------------+
| Field                 | Type          | Null | Key | Default           | Extra          |
+-----------------------+---------------+------+-----+-------------------+----------------+
| radio_id              | bigint(20)    | NO   | PRI | NULL              | auto_increment |
| name                  | varchar(128)  | NO   |     | NULL              |                |
+-----------------------+---------------+------+-----+-------------------+----------------+
表无线电用户:

+--------------------+------------+------+-----+-------------------+----------------+
| Field              | Type       | Null | Key | Default           | Extra          |
+--------------------+------------+------+-----+-------------------+----------------+
| account_radio_id   | bigint(20) | NO   | PRI | NULL              | auto_increment |
| radio              | bigint(20) | YES  | MUL | NULL              |                |
| user_account       | bigint(20) | YES  | MUL | NULL              |                |
+--------------------+------------+------+-----+-------------------+----------------+
用户实体:

@ManyToMany
@JoinTable(name = "RADIO_USER",
    joinColumns = {@JoinColumn(name = "user_account", referencedColumnName = "user_account_id")},
    inverseJoinColumns = {@JoinColumn(name = "radio", referencedColumnName = "radio_id")})
List<Radio> radios;

@Transactional
public void saveUser(User user) {
    user.setRadios(radioDao.getAll(Radio.class));
    entityManager.persist(user);
}
@manytomy
@JoinTable(name=“RADIO\u USER”,
joinColumns={@JoinColumn(name=“user\u account”,referencedColumnName=“user\u account\u id”),
inverseJoinColumns={@JoinColumn(name=“radio”,referencedColumnName=“radio\u id”)})
列出收音机;
@交易的
公共void saveUser(用户){
user.setRadios(radioDao.getAll(Radio.class));
entityManager.persist(用户);
}
无线电实体:

@ManyToMany(mappedBy="radios")
List<User> users;

@Transactional
public void saveRadio(Radio radio) {
    radio.setUsers(userDao.getAllUsersByRole(User.Role.ROLE_ADMIN));
    entityManager.persist(radio)
}
@ManyToMany(mappedBy=“radios”)
列出用户名单;
@交易的
公共广播电台(无线电台){
setUsers(userDao.getAllUsersByRole(User.Role.Role_ADMIN));
entityManager.persist(收音机)
}

看起来您需要级联


请参阅:

这是因为关系是双向的,对于Hibernate,所有者端是用于知道关联存在的端。因此,我需要使用以下代码:

@Transactional
public void save(Radio radio) {
    List<User> users = userDao.getAllUsersByRole(User.Role.ROLE_ADMIN);

    for (User user : users) {
        user.getRadios().add(radio);
    }

    radio.setUsers(users);
    entityManager.persist(radio)
}
@Transactional
公共无效保存(无线电){
List users=userDao.getAllUsersByRole(User.Role.Role\u ADMIN);
for(用户:用户){
user.getRadios().add(radio);
}
radio.setUsers(用户);
entityManager.persist(收音机)
}

有关更多详细信息,请参阅。

您使用什么作为JPA实现?我使用的是Hibernate。如果我更改了主导端,那么这将被持久化。