以下是我的申请流程
控制器 - 服务 - 存储库
在服务层,我们有@Transactional注释我们也有jpa:repository配置,我们指定实体管理器和txn管理器.
我怀疑是否jpa:repositories认为考虑了指定的txn管理器,并且没有@Transactional在服务层指定的影响.例如:服务层@Transactional可以映射到自定义txn管理器,其中由服务调用的存储库可以具有不同的txn管理器.在那种情况下,它不会产生问题吗?
有人澄清@Transactional我们在使用jpa存储库时是否需要放在服务层?
我已经在jpa存储库中添加了一个自定义方法,详见http://docs.spring.io/spring-data/data-jpa/docs/1.0.x/reference/html/#repositories.custom-implementations
据我所知,当我使用spring-data-rest时,这个方法不会暴露.有没有什么办法可以将它作为spring-data-rest生成的REST API的一部分发布(不用自己创建Spring MVC Controller)?
我正在使用Spring CrudRepository进行数据库查询.如何为布尔属性创建方法签名(不是自己编写SQL select语句)?
以下不起作用:
class MyEntity {
private boolean active;
}
interface MyEntityRepository implements CrudRepository<MyEntity, Long> {
List<MyEntity> findActive(); //or also: findNotActive();
}
Run Code Online (Sandbox Code Playgroud) 我想在spring应用程序中实现分页.我知道使用存储库我们可以实现分页但我们不能编写自己的数据检索查询存储库中有限的方法也没有接受查询类的方法.
如果我们想编写自定义查询以从mongodb检索数据,我们必须使用mongotemaplete,因为我知道使用mongotemplate我们无法实现分页.
有没有其他方法可以实现分页以及db查询.任何人都可以帮助我.
是否有Spring数据 CrudRepository通过不是主键的属性提供条目列表的删除?
public interface MyRepository extends CrudRepository<MyEntity, Long> {
@Modifying
@Transactional
public void deleteByName(List<String> names);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用IN子句和Spring Data中的@Query注释来查询Cassandra表.我有一个表,其分区键为last_name,聚类键为first_name.
我有这个查询工作
@Query("SELECT * FROM people WHERE last_name=?0")
public List<People> findByLastName(String lastName);
Run Code Online (Sandbox Code Playgroud)
我想做点什么
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name IN ?1")
public List<People> findByLastName(String lastName, String[] firstName);
Run Code Online (Sandbox Code Playgroud)
我有它正在使用
CassandraOperations.select("SELECT * FROM people WHERE last_name=" + lastName +
" AND first_name IN (" + concatinatedNameList + ")", People.class);
Run Code Online (Sandbox Code Playgroud)
但由于一些原因(代码风格,测试,我发誓还有更多)我宁愿使用@Query.有任何想法吗?
编辑更多信息!
传入数组,设置或列出返回值 Caused by: java.lang.IllegalArgumentException: encountered unsupported query parameter type [class [Ljava.lang.String;] in method public abstract
还尝试过:
String firstName = "Joe,Jim";
@Query("SELECT * FROM people WHERE last_name=?0 AND first_name …Run Code Online (Sandbox Code Playgroud) 我试图在同一个域对象上使用Spring Data JPA和Spring Data Elasticsearch,但它不起作用.
当我尝试运行一个简单的测试时,我得到以下异常:
org.springframework.data.mapping.PropertyReferenceException:找不到Person类型的属性索引!org.springframework.data.mapping.PropertyPath.(PropertyPath.java:75)〜[spring-data-commons-1.11.0.RELEASE.jar:na] at org.springframework.data.mapping.PropertyPath.create(PropertyPath .java:327)〜[spring-data-commons-1.11.0.RELEASE.jar:na] org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)〜[spring-data-commons- 1.11.0.RELEASE.jar:na] at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270)〜[spring-data-commons-1.11.0.RELEASE.jar:na] at org. springframework.data.mapping.PropertyPath.from(PropertyPath.java:241)〜[spring-data-commons-1.11.0.RELEASE.jar:na] at org.springframework.data.repository.query.parser.Part.( Part.java:76)〜[spring-data-commons-1.11.0.RELEASE.jar:
它们在禁用任何一个时都有效.
该项目基于Spring Boot 1.3.0.M5.
这是一个重现情况的示例项目:
https://github.com/izeye/spring-boot-throwaway-branches/tree/data-jpa-and-elasticsearch
spring-data spring-data-jpa spring-boot spring-data-elasticsearch
从我所做的研究看来,由于HTTP仅支持Amazon Elasticsearch,因此两者无法协同工作.
希望有人可以澄清一下,实际上它不是Spring Data Elasticsearch所能实现的.
spring spring-data spring-data-elasticsearch amazon-elasticsearch
我有一个项目利用Spring Data(在这个例子中是MongoDB)与具有相同模式的多个数据库进行交互.这意味着每个数据库使用相同的实体和存储库类.所以,例如:
public class Thing {
private String id;
private String name;
private String type;
// etc...
}
public interface ThingRepository extends PagingAndSortingRepository<Thing, String> {
List<Thing> findByName(String name);
}
@Configuration
@EnableMongoRepositories(basePackageClasses = { ThingRepository.class })
public MongoConfig extends AbstractMongoConfiguration {
// Standard mongo config
}
Run Code Online (Sandbox Code Playgroud)
如果我连接到单个数据库,这可以正常工作,但是当我想同时连接到多个数据库时,事情会变得更复杂:
@Configuration
@EnableMongoRepositories(basePackageClasses = { ThingRepository.class },
mongoTemplateRef = "mongoTemplateOne")
public MongoConfigOne extends AbstractMongoConfiguration {
@Override
@Bean(name = "mongoTemplateOne")
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(this.mongo(), "db_one");
}
// Remaining standard mongo config …Run Code Online (Sandbox Code Playgroud) 我花了好几个小时在spring数据中找到QueryDslPredicateExecutor.为什么它是一个博客,但被称为QueryDslPredicateExecutor在文档QuerydslPredicateExecutor(小d!)神器2.0.4.RELEASE?哪个版本是正确的?