在基于spring / openjpa的应用程序中,我有两个简单的实体:

@Entity
public class Game {

@Id
@GeneratedValue
protected Long id;
@ManyToOne(cascade={CascadeType.PERSIST,CascadeType.MERGE})
@JoinColumn(name = "target_id")
protected GameObject target;
...}

@Entity
public class GameObject {

@Id
@GeneratedValue
protected Long id;
@Column
protected String name;
@OneToMany(mappedBy = "target", cascade = CascadeType.ALL)
protected Collection<Game> games;
...}


我正在尝试使用关联的targetObject保存游戏对象:

@PersistenceContext
protected EntityManager entityManager;

@Override
@Transactional
public Game createEntity(Game entity) {
    getEntityManager().persist(entity);
    if (entity.getTarget() != null) {
        entity.getTarget().getGames().add(this);
    }
    getEntityManager().getEntityManager().flush();
    return entity;
}


我在一行中得到了NullPointerException:entity.getTarget()。getGames()始终为null,如果我在此处将其设置为空hashmap,则会发生此事件。 :/为什么

最佳答案

我建议您:

protected Collection<Game> games = new HashMap<Game>();


因此,默认值将是一个空集合(好的做法),而不是null(不好的做法)

关于java - JPA合并问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2317578/

10-16 10:43