Spring 引导中的外键问题 - h2 数据库
Foreign key problem in Spring Boot - h2 database
在我的 spring 启动应用程序中,我有 User
class 像这样的东西:
public class User {
@Id @GeneratedValue Long userID;
@OneToOne(fetch = FetchType.LAZY,targetEntity = LoginCredential.class)
@JoinColumn(name = "userID",referencedColumnName = "userID")
private LoginCredential loginCredential;
}
还有一个 class LoginCreadential
像这样:
public class LoginCredential {
@Id @GeneratedValue Long userID;
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
User user;
}
在我尝试添加这些关系之前,我的应用程序 运行 运行良好。现在它没有 运行。它给我错误(很多),但重要的部分在这里:
org.hibernate.AnnotationException:未知 mappedBy 在:com.mua.cse616.Model.LoginCredential.user,引用 属性 未知:com.mua.cse616.Model.User.user
这里有什么错误?如何解决这个问题?
这是因为 mappedBy
必须有一个值,该值是包含这些实体之间映射的字段的名称。
在您的示例中,这应该是 mappedBy = "loginCredential"
,因为包含 mappedBy
的 @OneToOne
注释 User
。另一方面,User
在 loginCredential
字段上使用 @JoinColumn(name = "userID",referencedColumnName = "userID")
定义了这些实体之间的映射,因此 mappedBy
.
的值
在我的 spring 启动应用程序中,我有 User
class 像这样的东西:
public class User {
@Id @GeneratedValue Long userID;
@OneToOne(fetch = FetchType.LAZY,targetEntity = LoginCredential.class)
@JoinColumn(name = "userID",referencedColumnName = "userID")
private LoginCredential loginCredential;
}
还有一个 class LoginCreadential
像这样:
public class LoginCredential {
@Id @GeneratedValue Long userID;
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
User user;
}
在我尝试添加这些关系之前,我的应用程序 运行 运行良好。现在它没有 运行。它给我错误(很多),但重要的部分在这里:
org.hibernate.AnnotationException:未知 mappedBy 在:com.mua.cse616.Model.LoginCredential.user,引用 属性 未知:com.mua.cse616.Model.User.user
这里有什么错误?如何解决这个问题?
这是因为 mappedBy
必须有一个值,该值是包含这些实体之间映射的字段的名称。
在您的示例中,这应该是 mappedBy = "loginCredential"
,因为包含 mappedBy
的 @OneToOne
注释 User
。另一方面,User
在 loginCredential
字段上使用 @JoinColumn(name = "userID",referencedColumnName = "userID")
定义了这些实体之间的映射,因此 mappedBy
.