java - 无法提交 JPA 事务:嵌套异常是 javax.persistence.RollbackException:提交事务时出错
问题描述
我查看了多个类似的实例(如下所述),其中错误几乎相同,但我发现我的情况有点不同。有人可以帮我吗?
在我的情况下,确切的异常消息是 -
Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
当我尝试MarriagePerson
保存@ManyToOne
与
User
. 请在下面找到实体及其关系 -
用户.java
@Entity
@Table(name = "MAIN_USER")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "user")
private Collection<MarriagePerson> marriagePerson = new ArrayList<MarriagePerson>();
@NotEmpty(message = "Name can not be empty")
@Size(min = 2, max = 20, message = "Name must be between 2 and 20 characters long")
@Column(name = "first_name")
private String firstName;
@Column(name = "middle_name")
private String middleName;
@Column(name = "last_name")
private String lastName;
@NotEmpty(message = "Email can not be empty")
@Size(min = 5, message = "Email must be more than 5 characters long")
@Column(name = "email", unique = true)
private String email;
@Column(name = "alternateEmail")
private String alternateEmail;
@NotEmpty(message = "Mobile can not be empty")
@Size(min = 10, max = 10, message = "Mobile must be 10 digits long")
@Column(name = "mobile", unique = true)
private String mobile;
@Column(name = "alternate_mobile")
private String alternateMobile;
@NotEmpty(message = "Password can not be empty")
@Size(min = 6, message = "Password must be more than 6 characters long")
@Column(name = "password")
private String password;
}
婚姻人.java
@Entity
@Table(name = "MARRIAGE_PERSON")
public class MarriagePerson {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
@JoinColumn(columnDefinition = "user_id")
private User user;
@NotEmpty
@Column(name = "gender")
private String gender;
@NotEmpty(message = "Name can not be empty")
@Size(min = 2, max = 20, message = "Name must be between 2 and 20 characters long")
@Column(name = "firstName")
private String firstName;
}
这就是我正在做的事情 -
- 我
User
在我的postgres
数据库中保存了一个。 - 现在我正在尝试保存
MarriagePerson
相同User
的内容,然后捕获到上述异常。
请在下面找到UserSerive
-MarriagePersonService
用户服务.java
@Service
public class UserService implements IUserService {
@Autowired
private IUserRepository userRepository;
@Override
public User save(User user) {
return userRepository.save(user);
}
}
婚姻人.java
@Service
public class MarriagePersonService implements IMarriagePersonService {
@Autowired
private IMarriagePersonRepository marriagePersonRepository;
@Override
public MarriagePerson save(MarriagePerson marriagePerson) {
userRepository.findById(userId).map(user -> {
marriagePerson.setUser(user);
return marriagePersonRepository.save(marriagePerson);
});
return marriagePerson;
}
}
marriagePersonRepository.save(marriagePerson);
对于以下提到的请求有效负载,在此行捕获了异常-
婚姻人有效载荷
{
"firstName": "Name",
"gender": "Male"
}
已保存的用户数据如下(我们正在尝试更新MarriagePerson)
{
"firstName": "string",
"middleName": "string",
"lastName": "string",
"email": "string@string.com",
"alternateEmail": "string1@string.com",
"mobile": "0123456789",
"alternateMobile": "0123456789",
"password": "string",
"marriagePerson": []
}
编辑
存储库接口是 -
IMarriagePersonRepository.java
@Repository
public interface IMarriagePersonRepository
extends JpaRepository<MarriagePerson, Long>, JpaSpecificationExecutor<MarriagePerson> {
List<MarriagePerson> findAll();
}
IUserRepository.java
@Repository
public interface IUserRepository extends JpaRepository<User, Long> {
public User findByMobile(String mobile);
User findByMobileAndEmail(String mobile, String email);
}
先感谢您。
解决方案
推荐阅读
- python - 有没有办法制作一个从 0-180 到 30-180/0-30 的直方图?
- python - groupby pandas 数据框并获取每 X 秒的平均值 - Python
- xml - 在雪花中解析 XML
- php - 如何在不停止 laravel 程序的情况下使用 dd()
- python - 在 Python 中,列表切片不起作用。我想通过使用引用来修改使用函数的列表,但这不起作用
- r - 降低算法的复杂性,从满足给定约束的无向图构造有向图 (DAG)
- python - Python --version Windows 只返回单词 Python
- android - 我创建了一个对象列表,listview 不会显示它
- javascript - 如何检查某个文件系统路径下的某个或多个文件是否存在?
- ios - 禁用自动更正类型不适用于 UITextfield