【发布时间】:2011-04-28 14:49:43
【问题描述】:
我在为具有双向多对多关系的实体检索数据时遇到问题。如果我使用List 来存储实体,我将无法同时获取多个包错误。如果我将代码更改为使用 Set,则会出现 stackoverflow 错误。
详情:
- 春季 3.0.3
- 休眠核心:3.5.1-Final
- 休眠注释:3.5.1-Final
- hibernate-common-annotations : 3.2.0-Final
- hibernate-entitymanager : 3.5.1-Final
- Mysql 数据库
- Junit 4
用户有多个银行账户;银行账户可以有很多用户
用户.java
@ManyToMany(fetch = FetchType.EAGER, mappedBy="user")
private List<BankAccount> bankAccounts = new ArrayList<BankAccount>();
BankAccount.java
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "user_bankaccount",
joinColumns = @JoinColumn(name="bank_account_id"),
inverseJoinColumns = @JoinColumn(name = "user_id")
)
private List<User> user = new ArrayList<User>();
数据库表
Users
user_id PK
Bankaccount
bank_account_id PK
user_bankaccount
bank_account_id PK ( references bankaccount.bank_account_id )
user_id PK ( references user.user_id )
问题
- 当我尝试使用 JUnit 测试用例获取所有用户数据 (
getAllUsers) 时,出现无法同时获取多个包的错误。 - 如果我分别使用
Set和HashSet而不是 List 和ArrayList,则会出现 stackoverflow 错误。
请帮助我,让我知道代码是否错误,或者它是我正在使用的特定版本的库的已知休眠问题。
【问题讨论】:
标签: java hibernate orm jpa-2.0