我已经找到了许多教程来正确设置我的模型之间的多对多关系,但我没有找到关于如何正确使用这些关系的满意答案。
我想解决的用例是:
如何向两个已存在的模型添加关系?
如何删除两个现有模型之间的关系而不删除模型?
如何删除具有多对多关系的模型?
到目前为止,对于我的用例,最好的解决方案是从彼此的用例中添加或删除模型 Set<>
(然后删除在第三个用例中不再有任何关系的模型)但是这样做,我并没有感觉到我在使用多对多表,我完全绕过了它,并引入了许多潜在的问题和问题来稍后处理。
如何正确使用多对多关系?
我正在使用的模型的代码(示例代码)
用户模型:
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.Set;
@Entity
@Data
@NoArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String username;
// fields removed to make the example simpler
@JsonIgnore
@ManyToMany
@JoinTable(
name = "users_roles",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
private Set<Role> roles;
}
榜样:
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.Set;
@Entity
@Data
@NoArgsConstructor
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@JsonIgnore
@ManyToMany(mappedBy = "roles")
private Set<User> users;
}
用户存储库:
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByUsername(@Param("username") String username);
}
角色存储库:
public interface RoleRepository extends JpaRepository<Role, Long> {
}
暂无答案!
目前还没有任何答案,快来回答吧!