Questions tagged «spring-data»

Spring Data是一个伞形开源项目,其中包含许多特定于给定数据库的子项目。这些项目是与这些令人兴奋的技术背后的许多公司和社区共同开发的。

1
Spring Data存储库实际上是如何实现的?
我在项目中使用Spring Data JPA仓库已有一段时间了,我知道以下几点: 在存储库接口中,我们可以添加类似的方法findByCustomerNameAndPhone()(假设customerName和phone是域对象中的字段)。 然后,Spring通过在运行时(在应用程序运行期间)实现上述存储库接口方法来提供实现。 我对它的编码方式很感兴趣,并查看了Spring JPA源代码和API,但是找不到以下问题的答案: 如何在运行时生成方法和生成的存储库实现类以及如何实现和注入方法? Spring Data JPA是否使用CGlib或任何字节码操作库来实现方法并动态注入? 您能否为上述查询提供帮助,并提供任何受支持的文档?

5
Spring DAO与Spring ORM与Spring JDBC
我正在研究Spring支持的数据访问技术,我注意到它提到了多个选项,但我不确定它们之间的区别: Spring-DAO(http://docs.spring.io/spring/docs/2.0.8/reference/dao.html) Spring-ORM(http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/orm.html) Spring-JDBC(http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html) 据我了解,Spring JDBC提供了用于减少样板代码的模板,这些样板代码通过普通的旧方法(您编写自己的SQL查询)来访问数据库。 Spring-ORM提供了简化的模板,用于通过ORM技术(例如Hibernate,My(i)Batis等)访问数据库。 根据Spring网站的Spring-DAO: Spring对数据访问对象(DAO)的支持旨在使以一致的方式轻松使用JDBC,Hibernate或JDO等数据访问技术 我对ORM与JDBC比较了解,因为它们针对的是访问数据库的不同方式。但是Spring-DAO简直令人困惑! 谁能说明这三个之间到底有什么区别?在哪种情况下应首选哪个? 另外,还有另一个项目Spring-DATA(http://projects.spring.io/spring-data/)现在,它是Spring支持的所有数据访问技术的父项目,还是Spring的新名称? -老兄?

4
Spring Data JPA通过嵌入式对象属性查找
我想编写一个Spring Data JPA存储库接口方法签名,该签名可以让我在该实体中找到具有嵌入式对象属性的实体。有人知道这是否可行吗? 这是我的代码: @Entity @Table(name = "BOOK_UPDATE_QUEUE", indexes = { uniqueConstraints = @UniqueConstraint(columnNames = { "bookId", "region" }, name = "UK01_BOOK_UPDATE_QUEUE")) public class QueuedBook implements Serializable { @Embedded @NotNull private BookId bookId; ... } @Embeddable public class BookId implements Serializable { @NotNull @Size(min=1, max=40) private String bookId; @NotNull @Enumerated(EnumType.STRING) …

4
缺少CrudRepository#findOne方法
我在项目中使用Spring 5。直到今天,仍然有可用的方法CrudRepository#findOne。 但是下载最新的快照后,它突然消失了!有没有参考说明该方法现在不可用? 我的依赖项列表: apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' repositories { mavenCentral() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } } dependencies { compile 'org.springframework.boot:spring-boot-starter-data-jpa' runtime 'com.h2database:h2:1.4.194' } 更新: 似乎此方法已被替换为 CrudRepository#findById

7
Spring Data:支持“删除依据”吗?
我正在使用Spring JPA进行数据库访问。我能够找到诸如findByName和countByName之类的示例,对于这些示例,我不必编写任何方法实现。我希望找到一些根据某些条件删除一组记录的示例。 Spring JPA是否支持类似于deleteByName的删除?任何指针表示赞赏。 谢谢,谢谢。

3
Spring Data的MongoTemplate和MongoRepository有什么区别?
我需要编写一个应用程序,可以使用spring-data和mongodb进行复杂的查询。我一直从使用MongoRepository开始,但是在复杂的查询中苦苦寻找实例或真正理解语法。 我说的是这样的查询: @Repository public interface UserRepositoryInterface extends MongoRepository<User, String> { List<User> findByEmailOrLastName(String email, String lastName); } 或使用基于JSON的查询,但由于语法不正确,因此尝试了多次尝试。即使在阅读了mongodb文档之后(由于语法错误,仍无法正常工作的示例)。 @Repository public interface UserRepositoryInterface extends MongoRepository<User, String> { @Query("'$or':[{'firstName':{'$regex':?0,'$options':'i'}},{'lastName':{'$regex':?0,'$options':'i'}}]") List<User> findByEmailOrFirstnameOrLastnameLike(String searchText); } 阅读完所有文档后,似乎mongoTemplate文档要好得多MongoRepository。我指的是以下文档: http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/ 您能告诉我使用什么更方便,更强大吗?mongoTemplate还是MongoRepository?两者都是成熟的,还是其中一个比另一个缺少更多的功能?

6
Spring Data JPA将本机查询结果映射到非实体POJO
我有一个带有本地查询的Spring Data Repository方法 @Query(value = "SELECT g.*, gm.* FROM group g LEFT JOIN group_members gm ON g.group_id = gm.group_id and gm.user_id = :userId WHERE g.group_id = :groupId", nativeQuery = true) GroupDetails getGroupDetails(@Param("userId") Integer userId, @Param("groupId") Integer groupId); 并且我想将结果映射到Non-Entity POJO GroupDetails。 是否可以,如果可以,请提供示例吗?


4
何时使用@RestController与@RepositoryRestResource
我一直在研究如何在REST中使用Spring的各种示例。我们的最终目标是HATEOAS/HAL安装Spring 我已经看到了两种在Spring中渲染REST的不同方法 通过@RestController控制器内 通过@RepositoryRestResource存储库中 我在努力寻找的是为什么您会使用一个而不是另一个。尝试实施HAL哪种方法最好? 我们的数据库后端是Neo4j。

16
带分页的Spring数据和本机查询
在一个网络项目中,将最新的spring-data(1.10.2)与MySQL 5.6数据库一起使用,我试图使用带有分页的本机查询,但org.springframework.data.jpa.repository.query.InvalidJpaQueryMethodException在启动时遇到了问题。 更新:20180306此问题已在Spring 2.0.4中修复。对于仍对旧版本感兴趣或仍在使用旧版本的人,请查看相关答案和评论以找到解决方法。 根据spring-data文档中使用@Query的示例50,可以指定查询本身和countQuery,如下所示: public interface UserRepository extends JpaRepository<User, Long> { @Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1", countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1", nativeQuery = true) Page<User> findByLastname(String lastname, Pageable pageable); } 出于好奇,在NativeJpaQuery课堂上我可以看到它包含以下代码来检查其是否为有效的jpa查询: public NativeJpaQuery(JpaQueryMethod method, EntityManager em, String queryString, EvaluationContextProvider …

4
如何在Spring Data中使用@Transactional?
我刚刚开始从事Spring数据,Hibernate,MySQL,JPA项目。我切换到spring-data,以便不必担心手动创建查询。 我注意到@Transactional当您使用spring-data时不需要使用of,因为我也尝试了没有注释的查询。 有特定的原因为什么我应该/不应该使用@Transactional注释? 作品: @Transactional public List listStudentsBySchool(long id) { return repository.findByClasses_School_Id(id); } 也可以: public List listStudentsBySchool(long id) { return repository.findByClasses_School_Id(id); } 提前致谢!

1
crudrepository findBy方法签名与多个in运算符?
我有一个这样的实体类: @Entity @Table(name = "EMAIL") class Email{ @Id @Column(name = "Id") Long id; @Column(name = "EMAIL_ID") String emailId; @Column(name = "PIN_CODE") String pincode; } 如何findBy使用crudrepository spring数据jpa编写以下查询的方法? select email_id,name from email_details where eamil_id in('mike@gmail.com','ram@gmail.com') and pin_code in('633677','733877') 我期望像下面这样的spring data jpa方法,但是如何构造它呢? List<Email> findBy.....(List<String> emails, List<String> pinCodes); 我想在单个数据库命中中获取电子邮件列表。

18
无法在Spring Boot中自动装配@Repository带注释的界面
我正在开发一个Spring Boot应用程序,在这里遇到了一个问题。我试图注入一个@Repository注释的接口,它似乎根本不起作用。我收到这个错误 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springBootRunner': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.pharmacy.persistence.users.dao.UserEntityDao com.pharmacy.config.SpringBootRunner.userEntityDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.pharmacy.persistence.users.dao.UserEntityDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. …

9
具有参数属性的Spring数据JPA查询
声明使用输入参数的属性作为查询参数的Spring数据JPA查询的最简单方法是什么? 例如,假设我有一个实体类: public class Person { @Id private long id; @Column private String forename; @Column private String surname; } 和另一类: public class Name { private String forename; private String surname; [constructor and getters] } ...那么我想编写一个Spring数据存储库,如下所示: public interface PersonRepository extends CrudRepository<Person, Long> { @Query("select p from Person p where p.forename = …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.