2015-06-29 6 views
2

Я использую couchbase3 с spring-data-couchbase и хочу запрашивать данные, используя репозиторий данных весны с несколькими столбцами.запрос couchbase с пружиной-data-couchbase, используя несколько столбцов

public interface UserAccountRepository extends CrudRepository<UserAccount, Long> { 
public UserAccount findByEmail(Query eMail); 
public UserAccount findByEmailAndStatus(Query query); // fn with multiple column, but not getting the result 
} 

Как мне написать функцию «Карта» и «Уменьшить» функцию для нее?

Для функции findByEmail (электронная почта запроса); работать, я добавил представление с Map п()

function (doc, meta) { 
    emit(doc.email,doc); 
} 

Это мнение есть по электронной почте в качестве ключа, и значение является документом. Но если мне нужно запросить использование электронной почты и статуса? Как должно выглядеть мнение?

Я видел эту ссылку, но не очень ясен. https://stackoverflow.com/questions/28938755

ответ

1

Я был в состоянии делает функцию springdata для вызова составного ключа вида. Мое имя Документ: Данные Соединение Key View

function (doc, meta) { 
    if(doc && doc._class == "com.couchbase.entity.Data"){ 
    emit([doc.key1, doc.key2], doc); 
    } 
} 

SpringData Repository Inferface показано ниже:

package com.couchbase.repository; 

import java.util.List; 
import org.springframework.data.couchbase.core.view.View; 
import org.springframework.data.repository.CrudRepository; 
import org.springframework.data.repository.query.Param; 
import com.couchbase.client.protocol.views.Query; 
import com.couchbase.entity.Data; 

public interface DataRepository extends CrudRepository<Data, String> { 

    @View(designDocument="Data",viewName="findByKey1AndKey2") 
    public List<Data> findByKey1AndKey2(Query query); 
} 

испытаний Класс показано ниже:

import com.couchbase.client.protocol.views.ComplexKey; 
import com.couchbase.client.protocol.views.Query; 

public class DataTest extends WebAppConfigurationAware{ 

    @Autowired 
    private DataRepository dataRepository; 

    @Test 
    public void testStringDataCompoundQuery(){ 
     Object[] objArr = new Object[2]; 
     objArr[0] = "aaa"; 
     objArr[1] = 1; 

     Query query = new Query(); 
     query.setKey(ComplexKey.of(objArr)); 

     System.out.println(dataRepository.findByKey1AndKey2(query)); 

    } 
} 

Если это было полезно для вас, пожалуйста, проголосуйте

1

Вы можете использовать составной ключ, как описать в документации здесь: http://docs.couchbase.com/developer/dev-guide-3.0/compound-keys.html

+0

можно ли запросить просмотр с составными клавишами с помощью «данных пружины»? –

+0

Да, у вас есть прямой доступ к Couchbase Java SDK, если вы используете Spring Data. Вы можете ввести компонент CouchbaseClient. –

+0

У вас есть ссылки или блоги о том же? –

Смежные вопросы