我正在使用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
我目前正在使用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) 我可以有一个可为空的字段吗?-如果其值为null,则不会在文档中存储该字段(名称或值);以及-如果其值为非null,则将字段名称和值存储在它。
我不是这样的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个参数:
好的,它工作正常......
所以我试着将它转换为我的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值. …
我是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) 如何通过Spring数据CrudRepository选择前100名?我想做一些类似的事情我得到一个错误.
List<Person> findTop100();
Run Code Online (Sandbox Code Playgroud)
我不想使用查询,休眠或其他任何东西.我只想通过弹簧数据轻松快捷地完成它
我正在遍历键/值对的列表,并对每个键/值执行查找。我可以创建一个单一的查询文档以在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)
谢谢,
我正在从以下项目迁移项目:
当我在控制器方法中访问来自我的数据库的对象时,我正在运行"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) 我有一个使用Spring MVC,Spring Security和Spring Data的Spring应用程序.一切都过去完美无缺,直到我将Spring Data的版本更新1.9.0.RELEASE为2.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) 我已经为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)