使用SpringJPA检索以POJO作为主键的对象
我有以下类:DepartmentMember和Account,由OneToOne关系映射 这是DepartmentMember类:使用SpringJPA检索以POJO作为主键的对象,spring,hibernate,jpa,spring-boot,spring-data-jpa,Spring,Hibernate,Jpa,Spring Boot,Spring Data Jpa,我有以下类:DepartmentMember和Account,由OneToOne关系映射 这是DepartmentMember类: @Entity(name="departmentmember") @Table(name="departmentmember") @Embeddable public class DepartmentMember { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private i
@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,它扩展了SpringJPA提供的Crudepository接口。
我要做的是定义一个查询,它将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)方法,但它不起作用,那么解决这个问题的正确方法是什么
编辑:
在AccountRepository中,我定义了以下方法:
帐户找到了DbyDepartmentMemberId(int id),但我仍然收到一个找不到的错误。我的控制器中实际上存在另一个问题。我通过添加
Account findByDepartmentMemberId(@Param("id")int id);
在AccountRepository中,我的控制器实际上存在另一个问题。我通过添加
Account findByDepartmentMemberId(@Param("id")int id);
在AccountRepository中我对上述内容有点困惑,您确定您的映射是正确的吗?我不认为in-Account DepartmentMember可以同时嵌入和OneToOne。@加菲尔德我后来实际上删除了它们,但这并没有改变事情的表现方式。我的查询仍然不起作用:(我对上面的内容有点困惑,你确定你的映射是正确的吗?我不认为in Account DepartmentMember可以同时嵌入和OneToOne。@加菲猫我后来确实删除了它们,但它并没有改变事情的行为方式。我的查询仍然不起作用:(