我有以下类:DepartmentMember和Account,通过OneToOne关系映射。
这是DepartmentMember类:
@Entity(name="departmentmember")
@Table(name="departmentmember")
@Embeddable
public class DepartmentMember {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name="name", nullable=false)
private String nume;
@Column(name="lastName", nullable=false)
private String prenume;
@OneToOne(mappedBy="departmentMember",cascade=CascadeType.ALL,fetch=FetchType.LAZY, optional=false)
@JsonIgnore
private Account account;
public DepartmentMember() {}
public DepartmentMember(String nume, String prenume, String cNP, String email) {
super();
this.nume = nume;
this.prenume = prenume;
}
//getters and setters
}
Account类:
@Entity(name="users")
@Table(name="users")
public class Account {
@Id
private int id;
@Column(name="username", unique=true, nullable=false)
private String username;
@Column(name="password", nullable = false)
private String password;
@Column(name="authorities", nullable=false)
private String authorities;
@OneToOne(fetch=FetchType.EAGER)
@MapsId
@Embedded
private DepartmentMember departmentMember;
public Account() {}
public Account(String username, String password, String authorities) {
super();
this.username = username;
this.password = password;
this.authorities = authorities;
}
//getters and setters
}
我已经定义了一个接口AccountRepository,它扩展了Spring JPA提供的CrudRepository接口。我要做的是定义一个查询,该查询将DepartmentMember id作为参数,并检索该成员的关联帐户。下面是Account对象的样子:
{
"username": "Maria_Popescu",
"password": "4ec38c6e-2463-4562-99ba-9f6c2b4528c4",
"authorities": "ROLE_USER",
"departamentMember": {
"id": 2,
"nume": "Popescu",
"prenume": "Maria",
}
我尝试使用findOne(int id)方法,但它没有工作,所以这是解决这个问题的正确方法?
编辑:在accountrerepository中,我定义了以下方法:
帐户findByDepartmentMemberId(int id),我仍然得到一个未找到的错误。
我的控制器实际上还有另一个问题。我通过添加
使它工作Account findByDepartmentMemberId(@Param("id")int id);