我有一个简单的应用程序,应该添加一个实体到数据库。它是用springboot编写的,我遇到了一个我不理解的错误,因为可能导致这些问题的特性不是我正在使用的。
我的应用程序向数据库添加“主动性”。一个计划基本上是一个事件,其中包含一个用户实体,即运行它的人。
我的倡议实体在这里:
public class Initiative {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
long id;
@NotNull
@Size(max = 250)
String title;
@NotNull
String description;
@NotNull
@Size(max = 50)
String category;
@NotNull
@Size(max = 50)
String club;
@NotNull
boolean active = true;
@NotNull
@Size(max = 25)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = "Europe/London")
LocalDate createdDate;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "initiative_leads",
joinColumns = {@JoinColumn(name = "inititative_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")})
Set<User> initiativeLeads = new HashSet<>();
我的初始位置是:
public interface InitiativeRepository extends CrudRepository<Initiative, Long> {}
最后是控制器。现在,我只做了一个get方法,它创建了一个计划,使用crud存储库中的save方法保存它,并将它返回给用户。
public class InitiativesController {
private InitiativeRepository initiativeRepository;
public InitiativesController(InitiativeRepository initiativeRepository) {
this.initiativeRepository = initiativeRepository;
}
@GetMapping
public Initiative createInitiative() {
Initiative initiative = new Initiative();
return initiativeRepository.save(initiative);
}
但是,当我运行此方法时,它会返回以下错误:
"message": "Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction"
我还尝试了如下post方法:
public void createRepo(@Valid @RequestBody Initiative initiative)
{
initiativeRepository.save(initiative);
}
然后通过 Postman 发送以下数据:
{
"title":"hello",
"description":"hdufhs",
"category":"hi",
"club":"hi",
"active":true,
"createdDate":"2012-04-23T18:25:43.511Z",
"initiativeLeads":[ {
"id": 1,
"firstName": "John",
"lastName": "Stockton",
"email": "abc@def.com",
"club": null,
"squad": null
}]
}
这也会返回相同的错误。
有一个更大的堆栈跟踪,但更长,我可以张贴,如果需要在这里。
我不理解这个错误,因为通过stackoverflow读取我看到它与事务有关。但是我没有使用它们,所以不理解错误。任何帮助都将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!