Tag: spring data

Spring Data MongoDB和/或带有多个可选参数的查询

我正在尝试使用2个以上的可选参数执行查询,但我没有得到任何结果。 对于2个参数,我按照这个问题的答案spring-data-mongo – 可选的查询参数? 。 例如,使用以下查询一切正常: @Query(“{$and: [{$or : [ { $where: ‘?0 == null’ } , { a : ?0 } ]}, {$or : [ { $where: ‘?1 == null’ } , { b : ?1 }]}]}”) 但是,如果我再添加一个参数,它就会停止工作: @Query(“{ $and : [{$and: [{$or : [ { $where: ‘?0 == null’ } , { a […]

JPA EntityGraph使用Spring的不同视图

我有一个Spring应用程序。 登录后,我正在调用getUserByEmail()方法。 我只需要用户和角色数据。 基于角色我将显示不同的视图,每个视图具有不同的数据并且需要User的不同子实体。 好像我必须使用不同的子实体调用getUserByEmail()。 这是涉及实体的部分代码: EntityGraph(value = “withAddresses”, type = EntityGraphType.FETCH) public class User{ public firstName; public lastName; @OneToMany(fetch = FetchType.LAZY) public List addresses @OneToMany(fetch = FetchType.LAZY) public List orders; } public userRepository extend jPaRepository(User.class,Long){ @EntityGraph(name=”withAdresses”) getUserByEmail(String email) /* if possible */ @EntityGraph(name=”withOrder”) getUserByEmail(String email) } 是否可以有两个具有相同查询名称的User对象图? 因为我需要不同视图的不同数据。 此外,当切换到新视图(弹簧控制器中的新调用)时,先前视图中的事务将被关闭,我必须进行新调用以与用户具有不同的数据。 我不明白如果你不在同一个事务服务方法中,fetch lazy是多么有用,除非我没有遗漏一些东西。 例如,如果我在“orderWiew.html”中需要订单数据,则延迟加载订单不会有帮助我必须再次调用相同的用户数据和其他订单数据

spring-data-mongodb在对象再水化时如何处理构造函数?

我已阅读http://static.springsource.org/spring-data/data-mongo/docs/1.1.0.RELEASE/reference/html/#mapping-chapter但无法找到以下基本弹簧数据的答案 – mongodb对象映射问题: 如果我从MongoDB加载以下类的实例: public class Test { private String str1; private String str2; private Date date3; public Test(String str1) { this.str1 = str1; this.date3=new Date(); } } 我理解构造函数Test(String str1)将使用MongoDB文档的顶级字段str1中找到的值进行调用。 我假设这个构造函数相当于显式声明@PersistenceConstructor 。 但是在这种情况下str2, date3字段str2, date3会发生什么? 是否仍会初始化所有不属于构造函数的字段,或者是否会丢失str2, date3值,因为只找到了使用str1的PeristenceConstructor? 最后,这会以什么顺序发生? date3是由构造函数设置的,然后被先前持久化的字段覆盖,反之亦然?

带有DynamoDB和MySQL双数据源的Spring Data / JPA存储库

我熟悉如何使Spring通过多个持久性单元和多个entityManagerFactoryBean实现动态处理多个数据源,但我正在努力的是如何在相同的弹簧配置中通过spring实现MySQL方言和 DynamoDB方言 -配置xml文件。 工作模式如下: [来自某个端点的数据POJO] – >将POJO保留到DynamoDB中,检索该对象的UUID(业务键作为POJO上的字段) – >将UUID作为复合键(没有参照完整性,它只是另一列)保留到MySQL中数据库[与其他相关的映射实体]。 我正在努力解决将DynamoDB实例添加到Spring配置文件中以实现此目的的方法。 对于它的价值,相关的存储库将在不同的包中。 任何10人的先发都会感激不尽! 我已经做了一些搜索,但所有的DynamoDB映射器框架似乎都处于更高的水平 – 我错过了什么吗? 我一直在关注Spring-Data DynamoDB,但仍然无法在配置文件和Dynamo之间建立链接。 提前致谢, 一个。 =========思考更新========= 我想我已经走错了路。 从更多地挖掘样本,进行本地集成测试[pure dynamodb],我认为不可能将DynamoDB用作EntityManager Factory实现的一部分:为此,我认为我将不得不“创建”我自己的存储库实现,它为Dynamo调用mapper和AWS连接助手类等,而不是使用任何JPA spring提供的代码。 除非有人能推荐/暗示否则?

在Spring数据JpaRepository方法问题中的Pageable和@Param

我有一个以下的存储库: public interface MilestoneRepository extends JpaRepository { @Query(“select m from Milestone m where m.date <= :date order by m.date desc") Page findLeftClosest(@Param(“date”) Date date, Pageable pageable); } 定义如上所述工作正常,但如果我切换参数顺序: public interface MilestoneRepository extends JpaRepository { @Query(“select m from Milestone m where m.date <= :date order by m.date desc") Page findLeftClosest(Pageable pageable, @Param(“date”) Date date); } 我在上下文初始化时遇到以下exception(发布最有趣的底层原因): […]

如何使用Spring Data MongoDB进行乐观锁定?

我正在阅读Spring Data MongoDB – 参考文档 ,我发现这些示例有点过于简单化了。 特别是我试图了解如何处理并发环境中的陈旧数据。 例如,假设我有以下实体: public class Person { private final String username; private final String firstname; private final String lastname; […] } 现在,如果我使用CrudRepository来保存/更新/删除我的实体,那么想象一下这样一个场景,其中两个线程检索同一个实体,其中一个删除它,另一个更新其lastname字段。 如果delete调用在save调用之前完成,那么当预期行为导致save操作失败时,我的实体将被删除然后重新创建。 到目前为止,我已经看到两种解决此问题的方法: 使用@Version注释。 找不到任何文档说Spring Data支持使用版本化文档在MongoDB中进行乐观锁定。 如果有人能指出我的链接,我们将不胜感激。 使用MongoOperations.findAndModify ,如果返回null失败。 这种方法的缺点是我不能再实现我的存储库API以获得“获取实体”和“保存更新的实体”类型的语义。 例如: User user = userRepository.findByUsername(“uniqueUsername”); user.setLastName(“Archer”); userRepository.update(user); 我想将其中的一部分推送到存储库我猜: userRepository.updateLastname(“uniqueUsername”, “Archer”); 但是我有点担心如果我想要做的每种类型的更新都需要一个新方法,我的存储库接口将无法控制地增长。 我意识到我还没有提出过一个问题,所以这就是:使用Spring Data for MongoDB设计应用程序的最佳实践是什么?

如何使用Spring Data / JPA插入Postgres Array类型列?

假设我有一个像这样的postgres表: CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][] ); 我甚至可以使用Spring Data插入pay_by_quarter列或schedule吗? 如果可能的话,它将如何看作存储库和实体? 我无法找到解决此问题的任何文档或示例,可能是因为它与更常见的用例重叠,如同一对多关系插入多个表。 说到这一点,我完全打算使用Postgresql array数据类型而不使用关系表。

Spring Data加入规范

我正在尝试转换此原始SQL查询: select product.* from following_relationship join product on following_relationship.following=product.owner_id where following_relationship.owner=input 进入Spring Data规范,我认为到目前为止我的问题是加入这些表。 这是我目前在规范中的转换: protected Specification test(final User user){ return new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { Join pfJoin = query.from(FollowingRelationship.class).join(“following”); pfJoin.on(cb.equal(pfJoin.get(“following”),”owner”)); return query.where(cb.equal(pfJoin.get(“following”),user)).getGroupRestriction(); } }; } 我得到了这个例外: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessA piUsageException: org.hibernate.hql.internal.ast.InvalidWithClauseException: with clause […]

Spring中的Pageable和@Param数据JpaRepository方法问题

我知道这个问题,但是使用org.springframework.data:spring-data-jpa:1.7.0.RELEASE我仍然遇到同样的问题( Either use @Param on all parameters except Pageable and Sort typed once, or none at all! )。 我的class级是: public interface BalanceHistoryRepository extends JpaRepository { @Query(“select bh from BalanceHistory bh where bh.account.id = :idAccount”) public BalanceHistory findCurrentBalanceByAccountNumber(PageRequest pageCriteira, @Param(“idAccount”) long idAccount); } 编辑 呼叫: Pageable page = new PageRequest(0, 1, Sort.Direction.DESC, “date”); BalanceHistory bh = […]

PageRequest构造函数已被弃用

我正在使用Spring Data Commons v2 +快照,我发现PageRequest的构造函数已被弃用。 这似乎发生在M1和M2之间。 不幸的是,这是Pageable接口的唯一[实际]实现。 我想知道努力的方向,以及当前发展的更好选择。