标签: spring-data

Elasticsearch获取数据,其中字段不为空/字段为空或字段存在/字段不存在

我正在使用elasticsearch spring数据,我想添加过滤器,以便可以按字段存在/不存在或字段值为null / not null进行搜索。我应该怎么做?

我知道我应该使用这样的东西:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "price"
              }
            },
            ...     <-- your other constraints, if any
          ]
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在Elasticsearch Spring数据中实现它?

Optional.ofNullable(searchParams.getUid()).ifPresent(v -> filters.add(boolFilter().must(???????));
Run Code Online (Sandbox Code Playgroud)

java elasticsearch spring-data spring-boot spring-data-elasticsearch

0
推荐指数
1
解决办法
3258
查看次数

使用Spring Data查看特定项目时只显示某些字段?

我目前正在使用Spring Boot创建一个带有mongodb后端的REST API.是否可以在查看特定项目时仅显示某些字段,而不是项目列表?

例如,在查看用户列表时,仅显示电子邮件,名称和ID:

GET /{endpoint}/users

{
  "_embedded": {
  "users": [
    {
      "email": "some_email@gmail.com",
      "name": "some name",
      "id": "57420b2a0d31bb6cef4ee8e9"
    }, 
    {
      "email": "some_other_email@gmail.com",
      "name": "some other name",
      "id": "57420f340d31cd8a1f74a84e"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是在搜索特定用户时会暴露额外的字段,例如地址和性别:

GET /{endpoint}/users/57420f340d31cd8a1f74a84e

{
  "email": "some_other_email@gmail.com",
  "name": "some other name",
  "address": "1234 foo street"
  "gender": "female"
  "id": "57420f340d31cd8a1f74a84e"
}
Run Code Online (Sandbox Code Playgroud)

给定一个用户类:

public class User {

    private String id;
    private String email;
    private String address;
    private String name;
    private String gender;

...
}
Run Code Online (Sandbox Code Playgroud)

spring mongodb spring-data spring-boot

0
推荐指数
1
解决办法
1865
查看次数

Spring Data for MongoDB是否允许带有可选字段的文档?

我可以有一个可为空的字段吗?-如果其值为null,则不会在文档中存储该字段(名称或值);以及-如果其值为非null,则将字段名称和值存储在它。

spring mongodb spring-data spring-data-mongodb

0
推荐指数
1
解决办法
1619
查看次数

为什么我在Spring Data JPA本机SQL查询中获取此异常?IllegalArgumentException:具有该位置[2]的参数不存在

我不是这样的Spring Data JPA(使用Hibernate 4.3.11.Final),我有以下情况.

我有这个SQL查询(直接执行MySql工作正常),查询只是找到注册到住宿表中的所有酒店,从选定的点到特定范围:

SET @fiumicino = GeomFromText('POINT(41.768835 12.247658)'); 

SELECT *
FROM accomodation a
WHERE earth_circle_distance(@fiumicino, a.geographical_position) < 7
Run Code Online (Sandbox Code Playgroud)

因此,您可以在previus代码中看到此查询有2个参数:

  • @fiumicino:这是一个MySqk Spatial POINT对象.
  • 7:这只是一个范围.

好的,它工作正常......

所以我试着将它转换为我的Spring Data JPA存储库接口的本机SQL查询,我做了:

@Repository
public interface AccomodationDAO extends JpaRepository<Accomodation, Long> {

    @Query(value = "SELECT * FROM accomodation a WHERE earth_circle_distance(?0, a.geographical_position) < ?1", nativeQuery = true)
    Accomodation findByRange(Point location, int range);

}
Run Code Online (Sandbox Code Playgroud)

基本上我用@ 0参数取代@fiumicino,用?1取代距离范围的7值. …

java spring hibernate spring-data spring-data-jpa

0
推荐指数
1
解决办法
3155
查看次数

Spring Boot - java.lang.ClassNotFoundException:org.hibernate.engine.transaction.spi.TransactionContext

我是Spring Boot的新手.我正在尝试使用Hibernate创建一个Web应用程序,但我遇到了这些错误.我看了类似的问题,但我找不到解决方案.我该如何解决?

2016-12-19 18:56:39.328 INFO 143744 --- [main] org.hibernate.Version:HHH000412:Hibernate Core {5.0.11.Final}

java.lang.ClassNotFoundException:java.net.URLClassLoader.findClass中的org.hibernate.engine.transaction.spi.TransactionContext(URLClassLoader.java:381)〜[na:1.8.0_91] java.lang.ClassLoader.loadClass(ClassLoader) .java:424)〜[na:1.8.0_91] at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)〜[na:1.8.0_91] at java.lang.ClassLoader.loadClass(ClassLoader.java :org.springframework.orm.hibernate4.HibernateTransactionManager.isSameConnectionForEntireSession(HibernateTransactionManager.java:711)〜[spring-orm-4.3.4.RELEASE.jar:4.3.4.RELEASE]:357)〜[na:1.8.0_91] org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:445)〜[spring-orm-4.3.4.RELEASE.jar:4.3.4.RELEASE] org.springframework.transaction.support.AbstractPlatformTransactionManager. org.springframework.transaction.interceptor.TransactionAspectSupport.createTransac中的getTransaction(AbstractPlatformTransactionManager.java:373)〜[spring-tx-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在ifg.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:277)〜[spring]的ifIfNecessary(TransactionAspectSupport.java:447)〜[spring-tx-4.3.4.RELEASE.jar:4.3.4.RELEASE] -tx-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)〜[spring-tx-4.3.4.RELEASE.jar: 4.3.4.RELEASE]在org.springframework的org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)〜[spring-aop-4.3.4.RELEASE.jar:4.3.4.RELEASE].在com.sun.proxy上的aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)〜[spring-aop-4.3.4.RELEASE.jar:4.3.4.RELEASE.$ Proxy77.listPosts(Unknown Source)〜 [na:na] at com.monat.service.PostServiceImpl.listPosts(PostServiceImpl.java:24)〜[classes /:na] at com.monat.controller.PostController.list(PostController.java:20)〜[classes/:NA]

我的pom.xml依赖项

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>commons-dbcp</groupId> …
Run Code Online (Sandbox Code Playgroud)

hibernate spring-data spring-boot

0
推荐指数
1
解决办法
5345
查看次数

Spring数据选择前100名

如何通过Spring数据CrudRepository选择前100名?我想做一些类似的事情我得到一个错误.

List<Person> findTop100();
Run Code Online (Sandbox Code Playgroud)

我不想使用查询,休眠或其他任何东西.我只想通过弹簧数据轻松快捷地完成它

java spring-data

0
推荐指数
1
解决办法
1906
查看次数

在Spring Mongo DB查询中指定多个条件

我正在遍历键/值对的列表,并对每个键/值执行查找。我可以创建一个单一的查询文档以在sql中实现联合吗,这样就只有一个数据库调用。

    List<User> userList = new ArrayList<User>();
    for (Map accounts:attributes) {
        Query query = new Query();
        List<Criteria> andCriteriaList = new ArrayList<Criteria>();
        accounts.forEach((key, value) -> {
            Criteria criteria = Criteria.where((String) key).is(value);
            andCriteriaList.add(criteria);
        });
        query.addCriteria(new Criteria().andOperator(andCriteriaList.toArray(new Criteria[andCriteriaList.size()])));
        if (mongoTemplate.exists(query, User.class)) {
            userList.add((User)mongoTemplate.find(query, User.class));
            //System.out.println(mongoTemplate.find(query, User.class));
        }
Run Code Online (Sandbox Code Playgroud)

谢谢,

mongodb spring-data spring-data-mongodb

0
推荐指数
2
解决办法
4455
查看次数

如何使用转换器的Spring控制器解决"org.hibernate.LazyInitializationException:无法初始化代理 - 无会话"

我正在从以下项目迁移项目:

  • Spring 4.2.1 - > 5.0.0
  • Spring Data Gosling - >凯
  • Hibernate 4.3.8 - > 5.8.0

当我在控制器方法中访问来自我的数据库的对象时,我正在运行"org.hibernate.LazyInitializationException:无法初始化代理 - 无会话".

这是我的代码的精简版:

// CustomUser.java
@Entity
@Access(AccessType.FIELD)
@Table(name = "users")
public class CustomUser implements Serializable {
    ...
    @Id
    @GeneratedValue//details omitted
    @GenericGenerator//details omitted
    @Column(name = "id", insertable = true, updatable = true, unique = true, nullable = false)
    private Long id;

    @Column(name = "name")
    private String name;

    public String getName() { return name; }
}

// UserController.java
@RequestMapping(value = "/user/{userId}/", method = RequestMethod.GET)
public …
Run Code Online (Sandbox Code Playgroud)

java hibernate spring-data

0
推荐指数
1
解决办法
2332
查看次数

启动Spring应用程序时出错:bean的初始化失败; 嵌套异常是AbstractMethodError

我有一个使用Spring MVC,Spring Security和Spring Data的Spring应用程序.一切都过去完美无缺,直到我将Spring Data的版本更新1.9.0.RELEASE2.x.

这是无法创建的存储库bean(BeanCreationException):

@Repository // Enables exception translation
public interface UsuarioRepository extends CrudRepository<Usuario, Long> {

    @Query("SELECT u FROM Usuario u WHERE LOWER(u.login) = LOWER(:login)")
    Usuario findByLogin(@Param("login") String login);

    @Query(value = "SELECT * FROM Usuario WHERE fl_ativo = true", nativeQuery = true)
    Iterable<Usuario> findAllActives();

}
Run Code Online (Sandbox Code Playgroud)

这是pom.xml(Maven):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- Artifact details -->
    <modelVersion>4.0.0</modelVersion>
    <groupId>br.com.nooder</groupId>
    <artifactId>portal-jstl</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <!-- Properties -->
    <properties>
        <project.build.version.log4j>2.8.2</project.build.version.log4j>
        <project.build.version.junit>4.12</project.build.version.junit>
        <project.build.version.slf4j>1.7.25</project.build.version.slf4j>
        <project.build.version.hibernate>5.2.12.Final</project.build.version.hibernate>
        <project.build.version.spring>4.3.8.RELEASE</project.build.version.spring>
        <project.build.version.spring.data>2.0.2.RELEASE</project.build.version.spring.data>
        <project.build.version.spring.security>4.2.2.RELEASE</project.build.version.spring.security>
    </properties> …
Run Code Online (Sandbox Code Playgroud)

java spring maven spring-data spring-data-jpa

0
推荐指数
1
解决办法
3920
查看次数

Spring Data JPA:DML操作不支持

我已经为Amazon Aurora数据库编写了一个查询,以在我的接口CrudRepositoryExtended中删除一些对象,但是当我执行该查询时,它将引发异常!

@Transactional
@Query("delete from HotelPrice hp where hp.updateDate < ?1 ")
void deletePriceOlderThan   (Date date);
Run Code Online (Sandbox Code Playgroud)

异常跟踪跟踪:

Caused by: java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [delete from com.gamesa.backend.persistence.domain.backend.HotelPrice hp where hp.updateDate < ?1 ]
    at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:554)
    at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:208)
    at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:87)
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:116)
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:106)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:499)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:477)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:56)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
    ... 35 common frames omitted
Run Code Online (Sandbox Code Playgroud)

jpql spring-data spring-data-jpa spring-boot amazon-aurora

0
推荐指数
1
解决办法
1943
查看次数