cuốn sách gpt4 ai đã làm

java - Caused by : java. lang.IllegalArgumentException : CONTAINING (1): [IsContaining, Containing, Contains]不支持redis查询推导-Redis

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 11:14:54 38 4
mua khóa gpt4 Nike

tôi đang phát triển Khởi động mùa xuân + Redis Ví dụ. Trong ví dụ này, tôi đã phát triển một số phương pháp tùy chỉnh để trích xuất chi tiết dựa trên RoleName. Đối với các phương pháp sau userRepository.findByRole_RoleName("ADMIN") hoặc userRepository.findByMiddleNameContaining("Li");, chúng tôi nhận được ngoại lệ sau đây.

URL tham khảo:https://docs.spring.io/spring-data/keyvalue/docs/1.2.15.RELEASE/reference/html/

Bất cứ ai có thể xin vui lòng cho tôi một số gợi ý? Tất cả các phương pháp khác đều hoạt động tốt. Nhưng chính cách tiếp cận này gây ra vấn đề. Tôi sẽ đăng tất cả các mã được yêu cầu bên dưới để tham khảo.

sai lầm:

java.lang.IllegalStateException: Không thực thi được CommandLineRunner
tại org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:795)
tại org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:776)
tại org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
tại org.springframework.boot.SpringApplication.run(SpringApplication.java:1242)
tại org.springframework.boot.SpringApplication.run(SpringApplication.java:1230)
tại com.baeldung.MainAppDemo.main(MainAppDemo.java:21)
Nguyên nhân là do: java.lang.IllegalArgumentException: CONTAINING (1): [IsContaining, Containing, contains] không được hỗ trợ cho việc dẫn xuất truy vấn redis
tại org.springframework.data.redis.repository.query.RedisQueryCreator.from(RedisQueryCreator.java:67)
tại org.springframework.data.redis.repository.query.RedisQueryCreator.create(RedisQueryCreator.java:53)
tại org.springframework.data.redis.repository.query.RedisQueryCreator.create(RedisQueryCreator.java:41)
tại org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:119)
tại org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:95)
tại org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:81)
tại org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.createQuery(KeyValuePartTreeQuery.java:211)
tại org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.prepareQuery(KeyValuePartTreeQuery.java:148)
tại org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery.execute(KeyValuePartTreeQuery.java:106)
tại org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:602)
tại org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:590)
tại org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
tại org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:59)
tại org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
tại org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
tại org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
tại org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
tại org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
tại org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
tại com.sun.proxy.$Proxy65.findByMiddleNameContains(Không rõ nguồn)
tại com.baeldung.MainAppDemo.run(MainAppDemo.java:38)
tại org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:792)
... 5 khung hình phổ biến bị bỏ qua
04-11-2018 00:27:29,639 THÔNG TIN [chính] org.springframework.context.support.AbstractApplicationContext: Đóng org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@6f96c77: ngày khởi động [Chủ Nhật, ngày 04 tháng 11 00:27 :26 IST 2018]; gốc của hệ thống phân cấp ngữ cảnh
2018-11-04 00:27:29,645 INFO [main] org.springframework.jmx.export.MBeanExporter: Hủy đăng ký đậu tiếp xúc với JMX khi tắt máy

người dùng.java

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@RedisHash("người dùng")
lớp công khai Người dùng {
Id chuỗi @Id riêng tư;
riêng tư @Indexed String firstName;
riêng tư @Indexed String middleName;
riêng tư @Indexed String LastName;
vai trò Vai trò riêng tư;
}

vai trò.java

@Data 
@Builder
@AllArgsConstructor
@NoArgsConstructor
@RedisHash("Vai trò")
lớp công khai Vai trò {
Id chuỗi @Id riêng tư;
riêng tư @Indexed String roleName;
}

UserRepository.java

giao diện công cộng UserRepository mở rộng CrudRepository{
List findByFirstNameAndLastName(Chuỗi FirstName, Chuỗi LastName);

Danh sách findByMiddleNameContains(String firstName);

Danh sách findByRole_RoleName(String roleName);
}

MainAppDemo.java

@SpringBootApplication
lớp công khai MainAppDemo triển khai CommandLineRunner{

@Autowired
kho lưu trữ người dùng riêng tư kho lưu trữ người dùng;

public static void main(String[] args) {
SpringApplication.run(MainAppDemo.class, args);
}

@Ghi đè
public void run(String... args) ném ngoại lệ {
Vai trò role1 = Role.builder().id("R1").roleName("ADMIN").build();
Người dùng user1 = User.builder().firstName("Matt").middleName("Mike").lastName("Wixson").role(role1).build();

Vai trò role2 = Role.builder().id("R2").roleName("API").build();
Người dùng user2 = User.builder().firstName("John").middleName("Lima").lastName("Kerr").role(role2).build();

userRepository.save(user1);
userRepository.save(user2);

List u = userRepository.findByFirstNameAndLastName("Matt", "Wixson");
System.out.println("Tìm theo Tên và Họ = "+u.toString());

Danh sách u2 = userRepository.findByMiddleNameContains("Li");
System.out.println("Chứa ="+u2);

Danh sách adminUser = userRepository.findByRole_RoleName("ADMIN");
System.out.println("ADMIN USER="+adminUser);
}
}

Các khiếm khuyết của JIRA:https://jira.spring.io/browse/DATAREDIS-887

gia hạn:

Tôi đã phát triển một truy vấn như thế này và gọi nó từ phương thức chính nhưng tôi vẫn gặp lỗi tương tự. Vui lòng đề xuất các giải pháp khả thi.

@Query("CHỌN u TỪ Người dùng u Ở ĐÂU u.middleName THÍCH :middleName ")
List findByMiddleNameContaining(@Param("middleName") Chuỗi middleName);

câu trả lời hay nhất

Được rồi, hãy bắt đầu với “Cách Redis hoạt động”

Redis hoạt động trên các hàm băm ID, giúp xác định vị trí các bản ghi nhanh hơn. @Indexed cũng được băm và lưu trữ để định vị các bản ghi nhanh hơn

Vì vậy, theo mặc định, đối với MiddleName, truy vấn "contain" sẽ không hoạt động vì hàm băm của chuỗi "Test" sẽ không được đưa vào hàm băm của chuỗi "TestUser".

Nhưng Ví dụMatcher Có thể giúp đỡ.

nguồn:https://docs.spring.io/spring-data/redis/docs/2.1.2.RELEASE/reference/html/#query-by-example

Tìm kiếm Tên vai trò trên Đối tượng vai tròGiải pháp tương đối đơn giản: sử dụng truy vấn này

userRepository.findByRoleRoleName("ADMIN") (về cơ bản là loại bỏ dấu gạch dưới)

Tin tốt là nó hoạt động với những điều trênVí dụMatcherĐược sử dụng kết hợp.

Nếu bạn có thắc mắc, hãy thảo luận về chúng.

Trích dẫn đầy đủ về tìm kiếm tên nhân vật:Truy vấn các đối tượng lồng nhau trong Redis bằng cách sử dụng dữ liệu Spring

Về java - Gây ra bởi: java.lang.IllegalArgumentException: CONTAINING (1): [IsContaining, Containing, contains] không hỗ trợ dẫn xuất truy vấn redis-Redis, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/53134556/

38 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress