spring boot elasticearch存储库-@id with class而不是@id with string

u7up0aaq  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(0)|浏览(277)

应该很简单,但我没有办法解决这个问题。我有一个 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等。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题