家长:弹簧引导起动数据JPA @OneToMany不会插入新的子当它是一个更新
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class A {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Long id;
@OneToMany(cascade = {CascadeType.ALL}, orphanRemoval = true)
public List<Child> child = new LinkedList<>();
}
儿童:
@Entity
public class Child {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Long child_id;
}
库:
import org.springframework.data.repository.CrudRepository;
@Transactional
public interface ARepository extends CrudRepository<A,Long> {
@Query("SELECT x FROM A x WHERE x.syncTimestamp IS NULL")
List<A> findAs();
}
坚持:更新
public class SomeClass {
@Autowired
private ARepository repo;
public void someMethod() {
List<A> as = repo.findAs();
A firstA = as.get(0);
firstA.child.add(new Child());
repo.save(firstA);
}
}
当我插入一个新的A对象时,一切正常,所有的孩子插入数据库。
但是,当我从数据库中加载一个A对象时,将一些子对象添加到列表中,然后更新对象,这不会插入新的子对象。
根据CascadeType的文档,ALL应该插入它们。
任何想法如何解决这个问题?
您可以添加代码,你实际加载/坚持:请按照以下方式你的孩子的实体将得到更新再试一次吗? – Adam
done @Adam,看看持久部分 –