【问题标题】:Foreign key problem in Spring Boot - h2 databaseSpring Boot 中的外键问题 - h2 数据库
【发布时间】:2020-01-01 19:25:45
【问题描述】:

在我的 Spring Boot 应用程序中,我有类似这样的 User 类:

public class User {
@Id @GeneratedValue Long userID;


@OneToOne(fetch = FetchType.LAZY,targetEntity = LoginCredential.class)
@JoinColumn(name = "userID",referencedColumnName = "userID")
private LoginCredential loginCredential;
}

另外一个班级LoginCreadential 是这样的:

public class LoginCredential {
@Id @GeneratedValue Long userID;

@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
User user;
}

在我尝试添加这些关系之前,我的应用程序运行良好。现在它不运行了。它给了我错误(很多),但重要的部分在这里:

org.hibernate.AnnotationException: Unknown mappedBy in: com.mua.cse616.Model.LoginCredential.user,引用属性未知:com.mua.cse616.Model.User.user

这里的错误是什么?如何解决?

【问题讨论】:

    标签: java spring spring-boot jpa h2


    【解决方案1】:

    这是因为mappedBy 必须有一个值,该值是包含这些实体之间映射的字段的名称。

    在您的示例中,这应该是mappedBy = "loginCredential",因为@OneToOne 包含mappedBy 注释User。另一方面,User 使用@JoinColumn(name = "userID",referencedColumnName = "userID")loginCredential 字段上定义这些实体之间的映射,因此mappedBy 的值。

    【讨论】:

    • 谢谢。我会在 6 分钟后接受,但是如何访问这些关系表?你能告诉我或给我推荐一些东西吗?
    • 你需要用@Entity注解实体,如果类名与表名不同,则还要@Table(name = "name_of_the_table")
    猜你喜欢
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2019-09-06
    • 2017-02-20
    • 2020-04-18
    • 2020-01-04
    相关资源
    最近更新 更多