- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个复杂的实体:
public class Task {
@OneToOne(orphanRemoval=true, mappedBy="parent")
@Cascade(value = CascadeType.ALL) (org.hibernate.annotations ... package)
private Executor executor;
...
}
public class Executor {
@OneToOne
@JoinColumn
private Task parent;
@ManyToOne
@Cascade(value = CascadeType.ALL)
private List<Property> propList = new LinkedList<Property>();
}
一般是一个‘Task’,它组成一个‘Executor’,‘Executor’中填充一些特定的属性。
如果我以常规方式执行此操作,则意味着:
@Service
public class Service {
@PostConstruct
private void test() {
Task task = new Task();
Executor ex = new Executor();
List<Property> props = ex.getProperties();
... forming and adding some properties
taskDao.saveAndFlush(task);
}
一切都很好,任务已正确存储。
但是由于这是简化的,我需要在获得任务后立即存储任务,意思是在定义之后立即存储它(刷新,不刷新,通过事务划分为一个单独的方法),
@Service
public class Service {
@PostConstruct
private void test() {
Task task = new Task();
taskDao.saveAndFlush(task); // no change in the exception if I properly move this out to a separate method with @Transactional
Executor ex = new Executor();
List<Property> props = ex.getProperties();
... forming and adding some properties
taskDao.saveAndFlush(task);
}
我得到“未保存的事务”,它指向第二个“saveAndFlush”。
只有当我填写属性时,这才可以实现,这意味着注释掉“形成属性”部分,一切都运行良好。
级联是全部(完整列表,保存在 org.hibernate.annotations...),所以我怀疑是否忘记指定“Cascade”。
最佳答案
saveAndflush
不会将实体更改为托管状态,您需要使用此方法返回的托管实体。尝试这个解决方案:
@PostConstruct
private void test() {
Task task = new Task();
task = taskDao.saveAndFlush(task); // reassign
Executor ex = new Executor();
List<Property> props = ex.getProperties();
... forming and adding some properties
taskDao.saveAndFlush(task);
}
关于java - Spring 启动。执行 saveAndFlush 并修改实体结果为未保存的 transient 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55730170/
我想问一下CrudRepository中save()的性能。首先是一个代码示例。 for(int i=0; i childExamples = new ArrayList<>(); Child
我在 Spring Rest 应用程序中使用 Spring data JPA、hibernate、sqlserver。 i) 对于第一个请求,一条记录被插入到数据库中。直到这里工作正常。 ii)当我用
我希望有人遇到过这个问题: 在服务层中,我捕获了一个异常,在 catch block 中,我想在数据库中保存一条记录,调用 saveAndFlush 然后抛出应用程序异常。问题是保存和刷新不会保留记录
我有以下实现。 @Transactional public void saveAndGenerateResult(Data data) { saveDataInTableA(data.some
我使用 Spring Data 和 Hibernate 作为 JPA 实现。 有时我会装载一辆车,操纵它并保存它。使用 Spring JPA-Repository 的代码如下所示: @Entity @
我正在使用 spring-data-jpa interface CrudRepository 在每日批量导入时将大型数据集保存在数据库中。 @Bean public ItemWriter jpaIte
我第一次尝试使用服务/存储库方法,但遇到了一个问题。本质上,我想在我的服务中做的是持久化我的实体,然后在相同的服务方法中使用它的 ID。 最初我打算使用 @GeneratedValue 和 Seque
我在我的bean上使用@OrderBy子句,当我从持久层获取这个对象时,它工作得很好,但是当我尝试使用保存这个数据时 persistedObject = saveAndFlush(MyCustomOb
我有一个由一组微服务构建的应用程序。一个服务接收数据,通过 Spring JPA 和 Eclipse 链接将其持久化,然后向第二个服务发送警报 (AMQP)。 根据特定条件,第二个服务然后针对持久化数
我有一个复杂的实体: public class Task { @OneToOne(orphanRemoval=true, mappedBy="parent") @Cascade(value
我是一名优秀的程序员,十分优秀!