JPA 对象映射不会在插入时保存子项



我的Play应用程序上有这个模型。

@Entity
@Table(name="SHOPPER")
public class User extends GenericModel {
    ...
    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "SASHNBR", insertable = true, updatable = true)
    public List<Direction> directions;
}

方向模型看起来像这个

@Entity
@Table(name="SHADDR")
public class Direccion extends GenericModel {
    ...
    @Column(name="SASHNBR")
    @Required
    public Long idUser;
}

这样我就得到了一个错误,因为Direction在保存时没有生成idUser。

我也试过这种方法。

@Entity
@Table(name="SHOPPER")
public class User extends GenericModel {
    ...
    @OneToMany(cascade = CascadeType.ALL, mappedBy="user")
    public List<Direction> directions;
}

方向模型看起来像这个

@Entity
@Table(name="SHADDR")
public class Direccion extends GenericModel {
    ...
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name = "SASHNBR", insertable = true, updatable = true)
    User user;
}

但它也不起作用。

有人能帮我吗?

谢谢!:)

你需要自己拯救孩子。您可以在教程中查看示例。

public User addDirection(Direction direction) {    
    this.directions.add(direction);
    this.save();
    return this;
}
@Override
public User save(){
    for (Direction dir : directions) {
        dir.save()
    }
    super.save()
    return this;
}

请尝试以下操作:

User user = new User();
// [...] call required setters of user object
for (int i=0; i<5; i++) {
    Direction direction = new Direction();
    direction.setUser(user);
    // [...] call other required setters of direction object
    user.getDirections().add(direction);
}
entitymanager.persist(user);

最新更新