【发布时间】:2019-07-29 17:51:12
【问题描述】:
我正在尝试建立双向多对多关联。
所以,我有一个名为用户的实体:
import lombok.Data;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Data
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@ManyToMany(mappedBy="users")
private List<Chat> chats = new ArrayList<>();
}
还有一个叫 Chat:
import lombok.Data;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Data
@Entity
public class Chat {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@ManyToMany
@JoinTable(name = "chat_user",
joinColumns = { @JoinColumn(name = "fk_chat") },
inverseJoinColumns = { @JoinColumn(name = "fk_user") })
private List<User> users = new ArrayList<>();
}
所以,当我尝试这样做时:
Chat chat = new Chat();
User user = new User();
user.getChats().add(chat);
chat.getUsers().add(user); // Getting an exception!!!
得到这个:
Method trew 'java.lang.StackOverflowExceptionError' exception.
Cannot evaluate hello.models.Chat.toString()
我认为问题是:Chat 有用户,引用该 Chat,该 Chat 有用户再次引用该 Chat,依此类推。
那我该如何解决呢?
【问题讨论】:
标签: spring hibernate spring-boot jpa many-to-many