JPA-Crud存储库查询方法不起作用



我想按用户名、启用状态和电话号码获得用户列表。我设法使它工作,直到我添加了电话号码参数。

这是我的代码:

//crud repo
List<Users> findAllByUserNameContainsAndEnabledIsAndMobileNotNull(String userName, String  enabled);
// controller
public Set<User> searchByName(@PathVariable String username) throws Exception {
Set<User> result = new HashSet<>();
result.addAll(userRepository.findAllByUserNameContainsAndEnabledIsAndMobileNotNull(username, "Y"));
return result;
}
// user class
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(precision = 18, scale = 0)
private BigDecimal id;

@Column(name = "Enabled", columnDefinition = "char(1) default 'Y'")
private String enabled;
private String username;
private String mobile;
// getters setters..

您的电话号码参数叫什么?你说在那之前它一直有效。名称必须匹配。

以下是方法名称中所有支持的关键字:

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-创建

我已经开始了新的项目,一切都按预期进行,所以问题不在方法名称中。这是我测试过的代码:

实体

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(precision = 18, scale = 0)
private BigDecimal id;
@Column(name = "Enabled", columnDefinition = "char(1) default 'Y'")
private String enabled;
private String userName;
private String mobile;
public User(String enabled, String userName, String mobile) {
this.enabled = enabled;
this.userName = userName;
this.mobile = mobile;
}
}

重新定位

public interface UserRepository extends CrudRepository<User, BigDecimal> {
List<User> findAllByUserNameContainsAndEnabledIsAndMobileNotNull(String userName, String  enabled);
}

测试

@SpringBootTest
@ExtendWith(SpringExtension.class)
@ActiveProfiles("test")
class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
void test_findAllByUserNameContainsAndEnabledIsAndMobileNotNull() {
User user1 = new User("Y", "user1", "mobile");
User user2 = new User("Y", "user2", null);
userRepository.save(user1);
userRepository.save(user2);
List<User> all = userRepository.findAllByUserNameContainsAndEnabledIsAndMobileNotNull("user", "Y");
System.out.println("all = " + all);
}
}

输出中只有一条记录:

all=[User(id=1,enabled=Y,userName=user1,mobile=mobile(]

最新更新