相关疑难解决方法(0)

保存后刷新并获取实体(JPA/Spring Data/Hibernate)

我有这两个简单的实体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)

java persistence hibernate jpa spring-data-jpa

26
推荐指数
4
解决办法
3万
查看次数

即使在孩子被保存后,Spring Data Jpa 测试也会返回空列表

@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)

spring hibernate jpa spring-data spring-data-jpa

4
推荐指数
1
解决办法
2109
查看次数