Tag: spring data

如何将带有动态密钥的文档映射到Spring MongoDb实体类

我有一个可以有动态密钥名称的文档: { “_id” : ObjectId(“51a29f6413dc992c24e0283e”), “envinfo” : { “appName” : “MyJavaApp”, “environment” : { “cpuCount” : 12, “heapMaxBytes” : 5724766208, “osVersion” : “6.2”, “arch” : “amd64”, “javaVendor” : “Sun Microsystems Inc.”, “pid” : 44996, “javaVersion” : “1.6.0_38”, “heapInitialBytes” : 402507520, } 这里envinfo的钥匙事先不知道。 在Spring Data Mongodb中创建实体类的最佳方法是什么,它将映射此文档?

Spring Data JPA – 在没有@Transactional的情况下获取了Lazy Loaded集合

我的期望是在事务范围内访问集合时应该获取延迟加载的集合。 例如,如果我想获取一个集合,我可以调用foo.getBars.size() 。 缺少活动事务应该导致exception,并显示错误消息 没有懒惰地初始化一个条形集合:….无法初始化代理 – 没有会话 但是,我注意到我的最新应用程序中的行为有所不同。 我正在使用Spring Boot 1.5.1和“data-jpa”启动器。 我过去使用过Spring Boot,但是数据jpa启动器对我来说是新的。 考虑以下情况。 我有一个懒惰加载的ManyToMany集合。 @SuppressWarnings(“serial”) @Entity @Table(name = “foo”) public class Foo implements java.io.Serializable { …. private Set bars = new HashSet(0); …. @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinTable(name = “foo_bar_map”, joinColumns = {@JoinColumn(name = “foo_id”, nullable = false, updatable = false)}, inverseJoinColumns […]

当手动分配ID时,Spring Data MongoDB Annotation @CreatedDate不起作用

我正在尝试使用审计来在我的对象中保存dateCreated和dateUpdated ,但由于我手动设置了ID ,所以还有一些额外的工作。 遵循Oliver Gierke在DATAMONGO-946中的建议,我试图找出如何正确实现它。 作为上面Jira任务的原始海报,我从这里下载了示例https://github.com/spring-guides/gs-accessing-data-mongodb.git并对其进行了一些修改: package hello; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.domain.Persistable; import java.util.Date; public class Customer implements Persistable { @Id private String id; @CreatedDate private Date createdDate; @LastModifiedDate private Date lastModifiedDate; private String firstName; private String lastName; private boolean persisted; public Customer() { } public Customer(String firstName, String lastName) { […]

DBRefs(Mongo文档引用)没有急切地获取

我在最简单的化身中使用Mongo(与Spring Data一起使用)。 我有两个(第一类)实体(@Documents)A和B,其中A有一个B的引用(@DBRef)。 创建A和B时一切正常。但是,当读取对象A(通过Id)时,引用B始终为null 。 我相信默认情况下会急切地获取DBRef(参见http://static.springsource.org/spring-data/data-document/docs/current/reference/html/#mapping-usage-references ),但目前的行为是反对的那。 有什么想法吗?

Spring Data Mongodb存储库不能正确实现inheritance

有两种类型的实体,映射到单个MongoDB集合中的两个Java类: @Document public class Superclass { … } @Document(collection = “superclass”) public class Subclass extends Superclass { … } 和这些实体的两个存储库: public interface SuperclassRepository extends MongoRepository {} public interface SubclassRepository extends MongoRepository {} MongoRepositories无法正确处理实体的inheritance。 在查询所有Subclass对象(例如SubclassRepository.findAll() )时,结果集包含Superclass对象,这些对象被实例化(或者至少已经尝试实例化),对于属于Subclass字段具有空值,但不是Superclass一部分。 预期的结果是SubclassRepository应该只返回Subclass对象,而SuperclassRepository应该返回Superclass和Subclass对象。 它在Spring Data JPA中以这种方式工作。 有没有人遇到过这个bug,并且有解决方法吗?

Spring Data PageImpl没有返回正确大小的页面?

我正在尝试使用从数据库中检索的对象列表创建一个新Page 。 首先,我从DB获取所有元素,将其转换为Stream,然后使用lambda过滤结果。 然后我需要一个具有一定数量元素的页面,但是,实例化一个新的PageImpl似乎不会返回一个具有正确大小的页面。 这是我的代码: List listaFinal; Stream stream = produtosRepository.findAll().stream(); listaFinal = stream.filter(p -> p.getProdNome().contains(“uio”)).collect(Collectors.toList()); long total = listaFinal.size(); Page imp = new PageImpl(listaFinal,pageable,total); 这是调试的屏幕截图: 请注意,Pageable对象中的大小设置为20,并且它理解它需要4个页面来呈现70个元素,但它返回整个列表。 我错过了什么? 编辑回答托马斯的评论: 我理解如何使用Page返回一小部分数据。 我展示的代码是我尝试使用lambda表达式来过滤我的集合。 对我来说问题是我想使用Java 8的lambda通过Spring Data JPA查询数据库。 我习惯了VB.NET和Entity function(x)查询表达式,并想知道如何使用Spring JPA做同样的事情。 在我的存储库中,Im使用extends JpaRepository, QueryDslPredicateExecutor ,这使我可以访问findAll(Predicate,Pageable) 。 但是,Predicate没有输入,所以我不能简单地在查询中使用p -> p.getProdNome().contains(“uio”) 。 我正在使用SQL Server和Hibernate。

Spring Data JPA和QueryDSL

我是Spring数据JPA的新手,我正在尝试了解如何最好地使用它与QueryDSL。 没有QueryDSL,我可以使用@Query注释在SpringData接口中创建任何查询。 为了使用QueryDSL获得相同的体验,从我所看到的,我需要创建自己的自定义存储库实现并让我的repo接口扩展我的自定义实现接口或将我的所有QueryDSL查询放在包装我的repo的服务层。 在第一种情况下,我失去了在我的自定义仓库中使用任何SD自动生成方法(例如:findAll(QueryDSL谓词))的能力,因为我无法访问实际的仓库对象,在第二种情况下,我是将查询逻辑放在服务层而不是repo层。 这两种解决方案听起来都不是特别有吸引 有没有第三种方式更合适? 或者我误解了如何正确使用QueryDSL和Spring Data? 谢谢! 埃里克

如何覆盖Spring Data CrudRepository上的delete方法?

我有一些我无法删除的对象,必须更新名为’deleted’的公共字段而不是它。 我在那里读到我可以使用#{#entityName}编写通用查询。 出于这个原因,我试图像这样覆盖CrudRepository#delete(…)方法: public interface DeleteableRepository extends CrudRepository{ @Override @Query(“UPDATE #{#entityName} x set x.deleted = 1 where x.id = ?1”) public void delete(ID id); } 但我有一个unit testing,显示我错了! @Test public void testDelete() { SomeDeleteableObject sdo = new SomeDeletableObject(); sdo = getDeleteableRepository().create(sdo); Assert.assertNotNull(sdo); Assert.assertNotNull(sdo.getId()); Assert.assertFalse(sdo.isDeleted()); getDeleteableRepository().delete(sdo); sdo = getDeleteableRepository().findOne(sdo.getId()); //Fails here } 是不是可以覆盖这样的CrudRepository方法?

是什么意思 save(S entity); 在Spring Repository中?

在Spring Data项目中,CrudRepository为正在管理的实体类提供了复杂的CRUDfunction。 public interface CrudRepository extends Repository { S save(S entity); T findOne(ID primaryKey); Iterable findAll(); Long count(); void delete(T entity); boolean exists(ID primaryKey); // … more functionality omitted. } 一般来说,我知道“S extends T”意味着什么,即S,保存操作的返回类型,必须是T的子类型。为什么有必要添加诸如约束? 我认为做这样的事情会很好: T save (T entity); 如在 void delete(T entity); 我已经用谷歌搜索了更多的帮助,我已经在stackoverflow本身上找到了以下问题,但对我来说并不是很清楚: Spring CrudRepository:为什么要发明一个新的generics类型S. 谢谢。

最新版本和旧版本冲突的两个Maven依赖关系

我在这里使用spring-data-dynamoDB项目,根据它的pom.xml,他们使用了aws-java-sdk的 1.6.9.1版本,但我需要使用最新版本的aws-java-sdk来实现我的项目它的function也实现了amazon s3。 如果我包含它的依赖, com.amazonaws aws-java-sdk 1.7.9 我得到如下例外, 12:51:25.298 [main] DEBUG osbfsDefaultListableBeanFactory – Retrieved dependent beans for bean ‘(inner bean)’: [_relProvider] 12:51:25.307 [main] ERROR oswcContextLoader – Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.hateoas.config.HypermediaSupportBeanDefinitionRegistrar$Jackson2ModuleRegisteringBeanPostProcessor#0’: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘_halObjectMapper’: Instantiation of bean failed; nested […]