【发布时间】:2016-12-16 16:11:39
【问题描述】:
家长:
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,看看 Persisting 部分
标签: java spring jpa spring-boot spring-data-jpa