【发布时间】:2021-09-03 03:44:09
【问题描述】:
我有两个表 user 和 student。学生和用户是一对一的关系。 我在 StudentEntity 中使用 userId 和 UserEntity 映射同一列
@实体 @Table(name = "用户") 公共类用户{ @ID 私有 UUID id; @Column(名称 = "名称") 私有字符串名称; ... // 为简洁起见忽略 getter setter } @实体 @Table(name = "学生") 公共课学生{ @ID 私有 UUID id; @Column(name = "user_id") 私有 UUID 用户 ID; @OneToOne @JoinColumn(name = "user_id", referencedColumnName = "id", 可插入 = 假,可更新 = 假) 私人用户实体用户实体; ... // 为简洁起见忽略 getter setter }@Repository
public interface StudentRepository extend PagingAndSortingRepository<StudentEntity, UUID> {
Optional<StudentEntity> findByUserId(UUID userId);
}
现在当我调用以下任何方法时,UserEntity 未填充
StudentEntity student = studentRepository.findByUserId(userId).get() student.getUserId() --- 这是存在的 student.getUserEntity() -- NULL不确定为什么在此调用中没有填充 UserEntity。
【问题讨论】:
-
您的代码对我有用。你能展示整个方法吗?您是否在同一事务中保存和查找用户?
-
移除这个字段 @Column(name = "user_id") private UUID userId;它应该可以工作
-
通过在 JoinColumn 注释中指定 user_id 可以使一切正常工作。您的实体中的 userId 不需要单独的字段
-
问题是我需要两者,以便在春季启动时我可以使用 findByUserId() 和 findByUserEntity()
-
@SimonMartinelli 我尝试了相同和不同的交易,但仍然为空
标签: java spring-boot hibernate jpa spring-data-jpa