Spring数据版本注释在mongo集合上使用时不递增
我正在使用带有mongoDB的春季数据来存储二进制数据,例如图像等 我想维护一个版本字段以附加到URL,以从缓存图像中欺骗浏览器. 请参阅下面的文档基类: import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Version; import org.springframework.data.mongodb.core.index.Indexed; public abstract class BaseDocument { @Id @Indexed(unique=true) protected long id; protected byte[] data; protected String mimeType; protected String filename; protected String e
2 2023-11-18
编程技术问答社区
Java MongoDB对象版本控制
我需要在(简单的)Java对象图上进行版本控制存储在以文档为导向的数据库(MongoDB)中.对于关系数据库和Hibernate,我发现了 Envers ,并且对可能性感到非常惊讶.是否有类似的东西可以与Spring Data Documents一起使用? 我找到这篇文章概述了我的想法(并且更多...)关于存储对象版本,我当前的实现工作类似,因为它将对象的副本存储在带有时间戳的单独历史记录集合中,但我想对其进行改进以节省存储空间.因此,我认为我需要在对象树上实现"差异"操作,又要实现重建旧对象的"合并"操作.那里有任何图书馆对此有所帮助吗? 编辑: 对MongoDB和版本的任何经验都非常感谢!我看到很可能没有弹簧数据解决方案. 解决方案 我们正在使用基本实体(在其中设置ID,创建 +最后更改日期,...).在此基础上,我们正在使用一种通用的持久方法,看起来像这样: @Override public ObjectId
0 2023-11-18
编程技术问答社区
如何知道spring-boot项目中使用了哪些版本的hibernate/spring数据?
我与弹簧靴项目一起工作 org.springframework.boot spring-boot-starter-parent 2.2.4.RELEASE 我如何检查..: 哪个版本的Hibernate链接到我的项目? 哪个版本的弹簧数据链接到我的项目? 您能向我解释我的日食IDE中的良好工作流程吗? 解决方案 您有两个选择: 使用您的IDE在依赖项下 使用终端 - mvn dependency:tree 其他解决方案 在您打开pom.xml时,在eclipse iDe中,很少有类似结构的标签会如下图所示. . 在此中,您可以转到依赖项层次结构部分,该部分将向您显示依赖关系层次结构和解决依赖关系.在已解决的依赖项中,您可以搜索想要的罐子(
0 2023-11-18
编程技术问答社区
弹簧数据redis -UUID ID- conventernotfoundException
我想用uuid键将我的实体存储在redis中: @RedisHash("order") public class Order { @Id private UUID id; ... } 但是,我在此设置中得到以下例外: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.util.UUID] to type [byte[]] at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:321) ~[spring-core-5.0.5.RELEASE.jar:5.0.5.RELEASE
0 2023-11-12
编程技术问答社区
elasticserch: org.elasticsearch.client.transport.NoNodeAvailableException。没有可用的节点
我具有从elasticsearch-0.90.7到elasticsearch-1.3.1的更新Elasticsearch版本,并且应用程序在elasticsearch-0.90.7>中工作正常,但是在elasticsearch-1.3.1中均低于异常: 2014-07-31/12:49:22.276 [SimpleAsyncTaskExecutor-4] ERROR step.AbstractStep - Encountered an error executing the step org.elasticsearch.client.transport.NoNodeAvailableException: No node available at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:219) at org.ela
6 2023-11-09
编程技术问答社区
使用spring数据jpa更新单个字段
我正在使用Spring -Data的存储库 - 非常方便的事情,但我遇到了一个问题.我可以很容易地更新整个实体,但是我相信只需要更新一个字段时毫无意义: @Entity @Table(schema = "processors", name = "ear_attachment") public class EARAttachment { private Long id; private String originalName; private String uniqueName;//yyyy-mm-dd-GUID-originalName private long size; private EARAttachmentStatus status; 要更新我只调用方法保存.在日志中,我看到了以下内容: batching 1 statements: 1: update processors.ear_attachment set mess
0 2023-11-09
编程技术问答社区
如何将@enablejparepositories排除在测试之外?
我有一个主@SpringBootApplication,需要扫描一个特定的软件包才能启用JPA存储库,因此我使用@EnableJpaRepositories来指定它.目前,我正在实施单元测试,我只想测试控制器组件,因此我在官方文档中遵循了他们使用@WebMvcTest(MyController.class)的教程来测试具有服务依赖性的控制器. 问题在于,这对我不起作用,因为它正在尝试加载我在主Spring Boot应用程序中指定的JPAREPOSITORIES(当我在主类中评论时,测试毫无问题地运行). 我猜我需要为测试类创建特定的配置,以便忽略主配置(因为我只想加载控制器并模拟服务层),但是我不知道如何创建这样的.我尝试添加一个空配置,但是它仍然存在相同错误的失败: @TestConfiguration static class TestConfig {} 这是我遇到的错误: Caused by: org.springframework.beans.factory
2 2023-11-07
编程技术问答社区
如何使用 "Spring Data JPA "规范对方法进行单元测试
我正在玩org.springframework.data.jpa.domain.spifications,这只是一个基本搜索: public Optional> rechercheArticle(String code, String libelle) { List result = null; if(StringUtils.isNotEmpty(code) && StringUtils.isNotEmpty(libelle)){ result = articleRepository.findAll(Specifications.where(ArticleSpecifications.egaliteCode(code)).and(ArticleSpecifications.egaliteLibelle(libelle))); }else{ if(StringUtils.isNo
6 2023-11-07
编程技术问答社区
Spring数据:服务层单元测试
在我的项目中,我很难进行单元测试.一个问题是,仅进行集成测试的编写速度要快得多,并且还测试了组件实际上可以合作的.单位测试小说"算法"或因此似乎容易得多.单元测试服务类感觉是错误和无用的. 我正在使用Mockito模拟弹簧数据存储库(因此DB访问).问题是,如果我告诉模拟的存储库返回实体A On方法调用getByid,它显然会返回,该服务也将返回.是的,该服务会做一些额外的事情,但非常小的事情,例如负载懒惰的收藏(来自Hibernate).显然,我在单位测试中没有任何懒惰的收藏(代理). 示例: @Test public void testGetById() { System.out.println("getById"); TestCompound expResult = new TestCompound(id, "Test Compound", "9999-99-9", null, null, null); TestCompoundRepos
2 2023-11-07
编程技术问答社区
如何测试Spring数据存储库?
我想要一个在弹簧数据的帮助下创建的存储库(例如,UserRepository).我是Spring-Data的新手(但不是春季),我使用此教程.我选择处理数据库的技术是JPA 2.1和Hibernate.问题在于我对如何为这种存储库编写单元测试是毫无头绪的. 让我们以create()方法为例.当我首先工作时,我应该为此编写一个单元测试 - 这就是我遇到三个问题的地方: 首先,如何将EntityManager的模拟注入EntityManager接口的不存在的实现?春季数据将基于此接口生成实现: public interface UserRepository extends CrudRepository {} 但是,我不知道如何强制使用EntityManager模拟和其他模拟 - 如果我自己编写了实施方式,我可能会有一种EntityManager的设置方法,让我可以使用我的模拟单位测试. (至于实际的数据库连接,我有一个JpaConfigurati
2 2023-11-07
编程技术问答社区
Spring Data Neo4j-repository.save 和 @Indexed(unique=true)
今天我尝试了弹簧数据neo4j,终于使它起作用 ... 我正在使用: 春季4.0.2 春季数据NEO4J 3.0.0 querydsl 3.3.1 neo4j 2.0.1 这是我的配置: @Configuration @EnableNeo4jRepositories(includeFilters=@Filter(value=GraphRepository.class, type=FilterType.ASSIGNABLE_TYPE)) public class Neo4jConfig extends Neo4jConfiguration { public Neo4jConfig() { setBasePackage("my.base.package"); } @Bean public GraphDatabaseService graphDatabaseService() { return n
12 2023-11-06
编程技术问答社区
我如何使用DomainClassConverter的自定义ID转换?
我有一个SQL数据库,其中主键是UUID,但是UUID的规范字符串表示非常长,我想在我的URL中使用缩短版本(Base58). Spring Data的DomainClassConverter将将MVC请求参数或路径变量转换为域对象,但是我希望能够在传递到存储库之前修改已解决的ID. 默认值SpringDataWebConfiguration使用上下文提供的FormattingConversionService创建DomainClassConverter,这大概对任意mangle并不安全.在方法参数上添加注释可能会消除解释的歧义,但这两者都必须在整个地方复制,并且不能与诸如Spring Data Rest之类的外部控制器使用.将(String parameter - > id)转换为转换服务的行为是在私人内部类中固定的,因此我无法在此处修改. 是否有任何非侵入性方法可以拦截参数并在传递给RepositoryInvoker? 之前将其转换 解决方案 最简单的是创建自己的格
4 2023-10-30
编程技术问答社区
Spring @Transactional不回滚检查过的异常
使用@Transactional(rollbackFor)抛弃检查异常时,我已经被困了一段时间,以使弹簧回滚成为事务.这是我的代码: 数据访问类: @Repository public class CustomerDao { @Autowired private SessionFactory sessionFactory; public void willRollback() throws CheckedException { sessionFactory.getCurrentSession().persist(new SpringCustomer(null, "roll back")); throw new CheckedException(); } } 其中CheckedException只是一个简单的检查例外: public class CheckedException extends
4 2023-10-25
编程技术问答社区
当我试图删除一个对象时,我的Spring jpaRepository抛出一个TransactionRequiredException。
我有一个RestController,其删除映射类似: @DeleteMapping("/deleterequest/{custId}") //@Transactional public ResponseEntity delete(@PathVariable long custId) { log.info("entering deleterequest"); LeaveQuery deleteLeaveQuery = leaveQueryRepository.findOne(custId); log.info("condition" + deleteLeaveQuery.getStatus().equals("Onbehandeld")); // if (!deleteLeaveQuery.getStatus().equals("Onbehandeld")) // re
2 2023-10-25
编程技术问答社区
春季数据如何在事务性方法中清理持久化实体?
我需要使用Hibernate的弹簧数据接收并节省大量数据.我们的服务器分配的RAM不足以同时持续所有实体.我们一定会遇到记忆错误. 因此,我们需要批次保存数据很明显.另外,我们需要使用 @transactional,以确保在单个错误时持续或不持续存在所有数据. 因此,问题: @transactional方法期间的弹簧数据是否可以将实体存储在RAM或潮红的实体中,垃圾收集器可以使用? 那么,如何处理弹簧数据的大量数据的最佳方法是什么?也许春季数据不是解决此类问题的正确方法. 解决方案 在 @transactional方法期间,弹簧数据是否将实体存储在 RAM或冲洗的实体可作为垃圾接触 收藏家? 该实体将继续存储在RAM(即entityManager中),直到交易提交/回滚或清除EntityManager为止.这意味着实体仅在交易提交/回滚或 entityManager.clear()称为. 那么,如何处理大量数据的最佳方法是 春季数据? 防止
2 2023-10-25
编程技术问答社区
如何在Spring Boot测试中强制事务提交?
在运行方法和不是的同时,我如何在弹簧启动中(带有弹簧数据)进行交易提交? 我在这里读到,在另一堂课中@Transactional(propagation = Propagation.REQUIRES_NEW)应该有可能,但对我不起作用. 有什么提示吗?我正在使用Spring Boot v1.5.2.release. @RunWith(SpringRunner.class) @SpringBootTest public class CommitTest { @Autowired TestRepo repo; @Transactional @Commit @Test public void testCommit() { repo.createPerson(); System.out.println("I want a commit here!"); // ...
0 2023-10-25
编程技术问答社区
使用 @transactional(readonly = true)的优点是什么?
我是初学者,据我了解@Transactional,只需确保用@Transactional注释的类或方法的所有内部工作都将包裹在一个交易中,而来自外部来源的所有调用都会创建一个新事务但是,为什么我们实际上在下面的存储库中需要这些注释?在常见情况下,将其与readOnly = true一起使用的优点是什么?这是使用 spring & Hibernate 的春季宠物临床示例应用" noreferrer"> https://github.com/spring-projects/spring-petclinic ). /** * Repository class for Pet domain objects All method names are compliant with Spring Data naming * conventions so this interface can easily be extended for Spring Data See
4 2023-10-25
编程技术问答社区
Spring-Data JPA:手动提交交易并重新启动新的
我有一种导入数据的方法.如果导入很大,则无法在单个交易中运行,而不会导致由于巨大的交易语句缓存而可能导致超ememoryError. 我想要的是在语句缓存中的n个记录后手动提交. 我该如何实现? (最好在 @transactional方法中). 解决方案 在每次迭代中使用EntityManager.flush()和EntityManager.clear(),以便会话与数据库同步,然后清除了Chache以防止OOM. 如果使用Hibernate,也可以将hibernate.jdbc.batch_size设置为适当的值,以在JDBC级别上进行批处理. 如果您还想在批处理后提交并坚持使用 @transactional方法,请重构代码,以便 @transactional方法从输入源中获取一批n个记录,并从外部循环中调用该方法.否则,您可以使用Spring的TransactionTemplate来编程控制交易. 这可能很有用: http://Docs.jbos
4 2023-10-25
编程技术问答社区
springboot jndi datasource抛出java.lang.classnotfoundexception:org.apache.tomcat.dbcp.dbcp.dbcp2.basicdatasourcefactory
之前已经问过类似的问题,我经历了所有这些问题,但无法解决问题. Related Questions - Q1,我有一个带有Spring Boot的Spring Batch项目,并尝试使用DB连接池.我使用的是带有8.5.x的嵌入式tomcat容器. 如果我使用application.properties指定数据源和池设置,一切正常. 但是当我尝试使用jndi时,我会得到异常 - Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory 我在maven罐子中没有看到任何JAR名称tomcat-dbcp-**,因此我不确定是否需要包括任何新的依赖项或需要设置默认数据源工厂以及如何进行操作. 下面是我的jndi bean设置,问题.我已经清除了某些值. @Bean public TomcatEmbeddedServle
4 2023-10-23
编程技术问答社区
对本地日期的Spring数据查询返回错误的条目-减去一天的时间
在我的实体中,我有一个类型 localdate " day"在mysql中,它被映射到"日期"类型. mySQL似乎在UTC SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);上运行00:00:00.我的系统正在运行CET(UTC+1) 如果我通过sql(来自Intellij的控制台配置了空的时区域)查询 ) select * from table where day = '2020-10-18'; 以正确的日期返回条目. 用弹簧数据指定的查询也看起来正确: 2020-11-09 16:16:32.911调试5600 --- [main] org.hibernate.sql:从table entity0_ where entity0_.tag =? 2020-11-09 16:16:32.924跟踪5600 --- [main] o.h.type.descriptor.sql.sql.basicbinder:绑定参数[1]作为[d
4 2023-10-22
编程技术问答社区