我是 JPA/Hibernate 新手, 我正在创建一个简单的联接来获取不同表中的一些数据 让我们看看这样:
目的是根据 M_USER.username 列获取 M_PROFILE 数据,但显然您会看到 M_PROFILE 表中没有外键。
我只是尝试使用下面的代码,但没有结果并且总是出错。
用户实体类
@Entity
@Table(name = "M_USER")
public class User {
@Id
@Column(name = "id")
private String uuid;
@Column(name = "email")
private String email;
@Column(name = "username")
private String username;
@OneToOne(fetch = FetchType.LAZY)
@MapsId("username")
private Profile profile;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Profile getProfile() {
return profile;
}
public void setProfile(Profile profile) {
this.profile = profile;
}
}
配置文件实体类
@Entity
@Table(name = "M_PROFILE")
public class Profile {
private String username;
private String phone;
private String address;
@Id
@Column(name = "username", nullable = false)
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Basic
@Column(name = "phone")
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Basic
@Column(name = "address")
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
调用时出现不同的错误
User user = userRepository.findByUsername("aswzen");
String phone = user.getProfile().getPhone();
例如这个。
"USER0_"."PROFILE_USERNAME": invalid identifier
需要帮助,提前致谢,
注意:我没有权限更改表格..
最佳答案
不要忘记禁用 JoinColumn 的可插入和可更新
@OneToOne
@JoinColumn(name = "username", referencedColumnName = "username", updatable = false, insertable = false)
private profile profile;
关于java - 没有外键的 JPA OneToOne 关联总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55392864/