【发布时间】:2014-05-08 19:55:34
【问题描述】:
我正在使用 postgresql 数据库,并且我有以下表格:“user”、“game”和“game_user”都在模式“allin”中。在我的 Web 应用程序中,我使用的是 Hibernate 4.3.5、Spring MVC 和 spring data jpa。
在我的 Game 类中,我有以下 OneToMany 关系:
@OneToMany(fetch=FetchType.EAGER)
@JoinTable(schema = "allin", name = "game_user",
joinColumns = { @JoinColumn(name = "game_id") },
inverseJoinColumns = { @JoinColumn(name = "user_id",nullable=true) })
private List<User> users;
这是我的单元测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { ServletInitializer.class, SecurityWebApplicationInitializer.class, WebMvcConfig.class})
@WebAppConfiguration
public class GameRepositoryTest
{
@Autowired
private GameService gameService;
@Autowired
UserService userService;
@Test
public void testRepostory()
{
List<User> users = new ArrayList<User>();
users.add(userService.findByUsername("luizcarlosfx"));
users.add(null);
users.add(null);
Game newGame = new Game(users, 10);
Game savedGame = gameService.save(newGame);
assertNotNull(savedGame);
Game getGame = gameService.findById(savedGame.getId());
assertEquals("There must be the same amount of users in the craeted game and in the saved game",newGame.getUsers().size(), getGame.getUsers().size());
}
}
当我运行单元测试时,我收到以下错误:“创建的游戏和保存的游戏中必须有相同数量的用户。预期: 但实际:。”
问题是休眠没有保存用户列表中的空值,我需要将我的访客玩家保存为空,因为他们没有任何用户。这部分应用程序必须保存我的多人游戏的游戏历史记录。
我的问题是如何让休眠也保存空值?
【问题讨论】:
标签: java spring hibernate postgresql jpa