我有这两个简单的实体Something和Property.该Something实体与多对一关系Property,因此当我创建一个新Something行时,我分配一个现有的Property.
东西:
@Entity
@Table(name = "something")
public class Something implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "owner")
private String owner;
@ManyToOne
private Property property;
// getters and setters
@Override
public String toString() {
return "Something{" +
"id=" + getId() +
", name='" + getName() + "'" +
", owner='" + …Run Code Online (Sandbox Code Playgroud) @Test
public void testAddPlayerToGame() {
gameRepository.save(createTestGame());
Game game = gameRepository.findOne(1l);
assertTrue(game.getId() > 0);
Player p = new Player();
p.setName("test 1");
p.setGame(game);
p.setChips(5000);
assertTrue(p.getId() == null);
playerRepository.saveAndFlush(p);
assertTrue(p.getId() != null);
flushAndClear();
Game game2 = gameRepository.findOne(1l);
assertEquals(1, game2.getPlayers().size());
}
Run Code Online (Sandbox Code Playgroud)
上述测试失败,因为game2.getPlayers() returns null.
已经通过JpaRepository 缓存新创建的对象。如何刷新?但想不出如何解决。
flushAndClear上面代码中使用的方法为空,如下:
protected void flushAndClear() {
// sessionFactory.getCurrentSession().flush();
// sessionFactory.getCurrentSession().clear();
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都非常感谢。
更新
游戏和玩家映射代码:
@Entity
@Table(name="game")
public class Game implements Serializable {
private static final long serialVersionUID = -495064662454346171L;
private long id;
private int …Run Code Online (Sandbox Code Playgroud)