首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jpa从MySQL数据库获取不一致的数据

Jpa从MySQL数据库获取不一致的数据
EN

Stack Overflow用户
提问于 2020-01-06 09:32:05
回答 1查看 142关注 0票数 2

我使用Jpa来与数据库通信,但我接收的数据不一致。我有一个user类,它与一个教师类有OneToOne关系。

代码语言:javascript
复制
@OneToOne(mappedBy="user")
private Teacher teacher; // From user class

@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="user_id", referencedColumnName="id")
private User user;  // from the teacher class

我用下面的方式拯救了一位老师:

代码语言:javascript
复制
public Teacher save(Teacher teacher, Long id)
{
    User user;
    Optional<User> ifUser = userRepo.findById(id);
    if(ifUser.isPresent()) {
        user= ifUser.get();
        user.setTeacher(teacher);
        user.setCompletedInfo(1);
        teacher.setUser(user);
        return teacherRepo.save(teacher);
    }else {
        System.out.println("Couldn't find any user here...");
        return null;
    }
}

其中userRepo和teacherRepo是从JpaRepository扩展的接口。到目前为止,它的工作相当酷。该信息将在数据库中更新。但当我从数据库中获取信息时,它会告诉我

代码语言:javascript
复制
 user.getCompletedInfo()

为空。同时,我可以在数据库中看到该值:

代码语言:javascript
复制
user.getCompletedInfo() =1;

数据库是MySql,我认为解决这个问题的一种可能的方法是,我正在从一个正在创建的新用户对象中获取一些信息。有关更多信息,请访问Github:https://github.com/shpendpalushi/JavaWeb/tree/For_Project

编辑:从一些单元测试中,我发现在教师服务中,setUser没有正确地完成它的工作。当我尝试保存时,它返回一个null;我是不是在getUser方法中做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2020-01-06 12:11:34

在查看了您在github上的代码后,我相信您混淆了您的参考资料

代码语言:javascript
复制
@JoinColumn(name="user_id", referencedColumnName="id")
private User user;

name正在指出应该使用当前实体中的哪一列。

referencedColumnName正在指出它应该指向的FK。

所以如果你换了它

代码语言:javascript
复制
@JoinColumn(name="id", referencedColumnName="user_id")

您的意思是,实体teacher中的列id应该指向user中的user_id列。

但这是我的快速猜测。

name vs referencedColumnName

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59605707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档