Java Hibernate不创建我的加入条目

Java Hibernate不创建我的加入条目,java,mysql,hibernate,Java,Mysql,Hibernate,我在hibernate中遇到的问题是,当我在创建新社区时希望将成员插入社区时,它不会插入DB。我错在哪里 我的社区课程: @Entity @Table(name = "community") public class Community extends BaseModel implements Serializable { private static final long serialVersionUID = -3290182848857364839L; @Column(na

我在hibernate中遇到的问题是,当我在创建新社区时希望将成员插入社区时,它不会插入DB。我错在哪里

我的社区课程:

@Entity
@Table(name = "community")
public class Community extends BaseModel implements Serializable {
    private static final long serialVersionUID = -3290182848857364839L;

    @Column(name = "name")
    private String name;

    @Column(name = "description")
    private String description;

    @ManyToOne
    @JoinColumn(name = "owner_id", nullable = false)
    private User owner;

    @Column(name = "picture")
    private String picture;

    @ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
    @JoinTable(name = "community_member", joinColumns = @JoinColumn(name = "community_id"), inverseJoinColumns = @JoinColumn(name = "user_id"), uniqueConstraints = @UniqueConstraint(columnNames = {
            "user_id", "community_id" }))
    private List<User> members = new ArrayList<User>();

    //getters and setters...
我可以看到在DB中创建了一个社区,DB中已经存在一个用户,但是community.getMembers.adduser;不起作用。它应该在community_member表中创建一个新条目

是不是因为我没有为community_成员表创建java类

编辑:我添加了用户实体

@Entity
@Table(name = "user")
public class User extends BaseModel implements Serializable {
    private static final long serialVersionUID = 8464105544313686923L;

    @Column(name = "username", unique = true, nullable = false)
    private String username;

    @Column(name = "email", unique = true, nullable = false)
    private String email;

    @Column(name = "name", nullable = true)
    private String name;

    @Column(name = "surname", nullable = true)
    private String surname;

    @Column(name = "password", nullable = false)
    private String password;

    @Column(name = "rating", nullable = false)
    private Long rating = 0L;

    @Column(name = "picture")
    private String picture;

    @OneToOne(fetch = FetchType.EAGER, cascade = { CascadeType.ALL }, mappedBy = "user")
    private UserRole role;

    @Enumerated(EnumType.STRING)
    @Column(name = "status", nullable = false)
    private UserStatus status = UserStatus.DEACTIVE;

Edit2:答案不应该是这样,但我的解决方案是:在DB中创建社区后,我向社区添加了成员。然后我更新了社区并插入了成员。

可能存在以下两个问题之一:

您可能正在HttpSession之外添加临时用户,而不是当前会话中的有效持久实例。确保用户的ID/主键设置正确,和/或尝试在当前会话中检索它

向反向关系添加实体不会在数据库中存储关系,只有关系的主端会存储关系。看起来你并没有在这里定义为逆,但这是需要注意的


您不必为社区成员创建类。您说数据库中已经存在用户,您是通过Hibernate获得的吗?您是否在用户端映射了社区列表?如果是,你能显示映射吗?是的,我通过hibernate获得它。当用户登录时,我从DB获取用户对象并将其放入他的会话中。之后,我从用户的会话中获取用户对象。它会影响什么吗?显示用户实体上的映射您使用的是列表而不是集合。是否有需要索引集合的原因?我从未尝试过与索引集合建立多对多关系,我不知道需要注意的是什么,也许您需要在一侧或两侧指定@OrderColumn。您正在为社区进行设置,但正在保存transientInstance。你提供的代码准确吗?
@Entity
@Table(name = "user")
public class User extends BaseModel implements Serializable {
    private static final long serialVersionUID = 8464105544313686923L;

    @Column(name = "username", unique = true, nullable = false)
    private String username;

    @Column(name = "email", unique = true, nullable = false)
    private String email;

    @Column(name = "name", nullable = true)
    private String name;

    @Column(name = "surname", nullable = true)
    private String surname;

    @Column(name = "password", nullable = false)
    private String password;

    @Column(name = "rating", nullable = false)
    private Long rating = 0L;

    @Column(name = "picture")
    private String picture;

    @OneToOne(fetch = FetchType.EAGER, cascade = { CascadeType.ALL }, mappedBy = "user")
    private UserRole role;

    @Enumerated(EnumType.STRING)
    @Column(name = "status", nullable = false)
    private UserStatus status = UserStatus.DEACTIVE;