1

Springクラウドを使用して、ファイルストアに接続してデータを読み取ります(ネイティブモードでCloud Firestoreを使用)。

Pom.xml

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-gcp-starter-data-datastore</artifactId>
</dependency>

Spring GCP バージョン - <gcp.version>1.2.8.RELEASE</gcp.version>

実在物

import org.springframework.cloud.gcp.data.datastore.core.mapping.Entity;
import org.springframework.data.annotation.Id;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity(name = "user_profile")
public class UserProfile {

    @Id
    private Long id;

    private String applicationId;

    private String firstName;

}

リポジトリ

import org.springframework.cloud.gcp.data.datastore.repository.DatastoreRepository;

public interface UserProfileRepository extends DatastoreRepository<UserProfile, Long> {
    
    List<UserProfile> findByApplicationId(String applicationId);

}

サービス


// Save
 public void register(UserRegistrationRequest dto) {
        
        UserProfile userProfile = new UserProfile();
        userProfile.setFirstName(dto.getFirstName());
    
        userProfile.setApplicationId(tkmIdGenerator.generate(UserType.Candidate));
            
        userProfileRepository.save(userProfile);
    }

// Get
 public void getUserDetails(String applicationId) {
        
        java.util.List<UserProfile> userProfiles = userProfileRepository.findByApplicationId(applicationId, Sort.by(Order.asc("applicationId")));
        System.out.println(userProfiles);
    }

保存は完全に正常に機能しますが、それを読み取ろうとすると、インデックスが一致しないというエラーが発生します。データを読み取るために単一の属性を使用しています。この場合、firestore は自動的にインデックスを作成します。なぜこのエラーが発生するのか少し混乱しています。

エラー

com.google.datastore.v1.client.DatastoreException: no matching index found.
    at com.google.datastore.v1.client.RemoteRpc.makeException(RemoteRpc.java:136) ~[datastore-v1-proto-client-1.6.3.jar:na]
    at com.google.datastore.v1.client.RemoteRpc.makeException(RemoteRpc.java:185) ~[datastore-v1-proto-client-1.6.3.jar:na]
    at com.google.datastore.v1.client.RemoteRpc.call(RemoteRpc.java:96) ~[datastore-v1-proto-client-1.6.3.jar:na]
    at com.google.datastore.v1.client.Datastore.runQuery(Datastore.java:119) ~[datastore-v1-proto-client-1.6.3.jar:na]
    at com.google.cloud.datastore.spi.v1.HttpDatastoreRpc.runQuery(HttpDatastoreRpc.java:198) ~[google-cloud-datastore-1.105.3.jar:1.105.3]
    at com.google.cloud.datastore.DatastoreImpl$1.call(DatastoreImpl.java:194) ~[google-cloud-datastore-1.105.3.jar:1.105.3]
    at com.google.cloud.datastore.DatastoreImpl$1.call(DatastoreImpl.java:191) ~[google-cloud-datastore-1.105.3.jar:1.105.3]
    at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:105) ~[gax-1.60.1.jar:1.60.1]
4

0 に答える 0