应该很简单,但我没有办法解决这个问题。我有一个 Profile
使用class@id User
带接口:
public interface ProfileRepository extends ElasticsearchRepository<Profile, User> {
配置文件是:
public class Profile {
@Id
private User user;
[... plus getters, setters, constructors]
用户是:
public class User {
private String id;
private String role;
[... plus getters, setters, constructors]
保存配置文件没有问题(如您所见,elasticsearch会放置用户的字符串表示):
"_id": "User(id=TestID, role=TestRole)",
"_score": 1.0,
"_source": {
"_class": "com.example.model.Profile",
"user": {
"id": "TestID",
"role": "TestRole"
},
但在那之后我再也找不到任何个人资料了。如果我做了以下任何一件事:
profileRepository.findAll();
profileRepository.customFindByIdRole("TestID", "TestRole");
profileRepository.findById(new User("TestID", "TestRole"));
我总是得到:
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.String] to type [com.example.model.User]
注意:customfindbyidrole的实现方式如下:
@Query("{\"query\": { \"bool\": { \"must\": [ { \"match\": { \"user.id\": \"?0\" } }, { \"match\": { \"user.role\": \"?1\" } } ] } }}")
Profile customFindByIdRole(String id, String role);
另外请注意,如果我添加任何spring-jpa依赖项,很多依赖项都会被破坏,所以我不确定是否可以依赖@embedded@idclass等。
暂无答案!
目前还没有任何答案,快来回答吧!