我想根据子搜索条件获取父对象数据。
User Entity类如下所示:
@Entity
@Table(name = "user")
public class User
{
protected String usertId;
protected Collection<Contact> contacts;
@OneToMany
@JoinColumn(name="user_id", referencedColumnName="user_id")
public Collection<Contact> getContacts()
{
return contacts;
}
//getters & setters
}
及其子类
@Entity
@Table(name = "contact")
public class Contact
{
protected String phoneNumber;
protected String zipCode;
//getters & setters
}
UserRepository
类是:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByZipCode(String zipCode);
}
我试图让所有用户基于例如邮政编码,但这给出了以下编译错误。
无效的派生查询!找不到类型User!
的属性zipCode有些人可以帮我解决这个或任何有关如何使用子字段获取记录的示例教程
答案 0 :(得分:1)
您正在zipCode
实体中寻找User
。虽然它与Contact
实体有关。只需使用以下方法:
User findByContactsZipCode(String zipCode);
这意味着User.contacts.zipCode
。
然而,这是一种典型的方式,在某些情况下使用此方法会导致错误理解(假设您的User
实体也具有contactsZipCode
属性。为了防止出现此类问题,您可以使用_
将contacts
与zipCode
分开。
User findByContacts_ZipCode(String zipCode);
有关更多详细信息和示例,您可以从here
中读取JPA的属性表达式我希望它有效:)