我有一个使用复合键的数据库。是否可以使用 spring-data-jdbc?我尝试了里程碑版本 1.1M2,其中我以以下方式映射了我的实体:
class History {
@ID
@Embedded
private CompositeHistoryID id;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的存储库类中,我添加了
HistoryRepository extends Repository<History,CompositeHistoryID >{
History findByhId(CompositeHistoryID id)
}
Run Code Online (Sandbox Code Playgroud)
我跟踪了SQL,它没有用。嵌入部分有效,但 where 子句不正确。它使用单个参数持有者而不是具有常规复合键结构,其中 element1=subkey1 和 element2=subkey2 等等......
我有两个问题。有什么方法可以使复合 ID 工作吗?
第二个问题是,让我们假设我使用自定义@Query的顶部findByID将保存方法下班后,如果?什么是完全没有ID,如果我只是随机选择一个列并说你将成为我的ID怎么办?
我在一个Web应用程序上工作,从其代码中调用多个Web服务客户端.
每个Web服务都有一些常见的命名空间,但是当我生成每个客户端时,我正在将这些命名空间映射到不同的包
例如
Web Service 1的namespace1 - > com.company.webservice.client1.service
Web Service 2的namespace1 - > com.company.webservice.client2.service
其中namespace1引用相同的命名空间URL.
使用Wsdl2Java的namespace2package选项:
// Web Service Client 1's namespace parameter
--namespace2package http://www.multispeak.org/Version_3.0=com.company.webservice.client1.service
// Web Service Client 2's namespace parameter
--namespace2package http://www.multispeak.org/Version_3.0=com.company.webservice.client2.service
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地为这些服务生成Web服务客户端代码,只要生成的客户端jar中只有一个在给定Web服务调用的类路径上,我就可以自己调用每个客户端.但是,如果我将两个Web服务客户端jar放在类路径上,则只有一个Web服务客户端可以工作(其各自的客户端jar首先在类路径上).
尝试调用时,其他Web服务客户端失败,但以下情况除外:
java.lang.ClassCastException:com.company.webservice.client1.service.impl.GetAllMetersResponseDocumentImpl无法强制转换为com.company.webservice.client2.service.GetAllMetersResponseDocument
我已经混淆了上面的一些实际值.
因此,问题似乎是关于Axis2/XMLBeans如何查找适当的类以匹配给定的XML来解析.
我可以更改命名空间映射,以便它们相互匹配,之后它可以正常工作.但是,缺点是我在同一个包结构中有多个包含相同生成代码的Web服务客户端jar,这些类只能从它在类路径中找到的第一个客户端jar中的模型中实例化.
有没有办法这样做,以便我可以为每个Web服务客户端jar保留不同的命名空间?
或者我只是被迫将每个命名空间映射到使用该命名空间的每个客户端的同一个包?
希望这个问题有意义,但是如果我需要提供其他任何有用的东西,请告诉我,我将进一步详细说明这个问题,但希望有使用Wsdl2Java的Axis2/XMLBeans/web服务客户端生成知识的人应该是能够在没有更多信息的情况下回答这个
更新1: 我终于放弃了,只是使所有的命名空间映射指向同一个包而不是每个Web服务客户端的定制,并且在类路径上的各个JAR中获得了同一个类的多个副本.不像我希望的那样优雅,但至少它有效.
如果有人能想出一个更好的解决方案,允许我在每个客户端使用定制副本,请告诉我.
更新2: 这种方法同样不起作用,因为尽管使用相同的命名空间,两个Web服务产生不同版本的命名空间模型,现在导致编译时错误依赖于类路径顺序.那么......回到原点......
我正在尝试使用Jadira类型的JODA钱类来处理到Hibernate 4的映射.
它工作正常(除了我有太多的货币字段).
但我需要构建一个聚合查询来总结一些总数.
这是类型声明.
@Columns(columns = { @Column(name = "total_currency", length=10), @Column(name = "total") })
@Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmountAndCurrency")
private Money total;
Run Code Online (Sandbox Code Playgroud)
我正在尝试定义一个查询,例如:
@Query(value="select sum(oi.total) from OrderItem oi where oi.order = ?1")
Double calculateSubtotal(Order order);
Run Code Online (Sandbox Code Playgroud)
有没有办法使用JPQL聚合Money字段的查询?
谢谢.
我有一个 Spring Boot 2 应用程序,它使用两个数据源 - 一个 Oracle 和一个 H2。H2 数据源设置为辅助数据源,我想在启动时为其创建架构,但它永远不会触发 schema.sql 文件。这是我的数据源配置文件:
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSourceProperties primaryDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSource primaryDataSource() {
return primaryDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean
@ConfigurationProperties("spring.runlogdatasource")
public DataSourceProperties runlogDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("spring.runlogdatasource")
public DataSource runlogDataSource() {
return runlogDataSourceProperties().initializeDataSourceBuilder().build();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 application.properties 文件:
spring.datasource.url=jdbc:oracle:thin:@my.database.com:1521/mydb
spring.datasource.username=test
spring.datasource.password=ENC(3PXcnoBndLpWN1EcMtmIn+odOwhdWjSrqANijutxuekKEIOco64Jew==)
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.initialization-mode=never
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=10
jasypt.encryptor.bean=stringEncryptor
spring.runlogdatasource.url=jdbc:h2:~/runlogdb;CIPHER=AES;DB_CLOSE_ON_EXIT=FALSE;
spring.runlogdatasource.username=sa
spring.runlogdatasource.password=ENC(3PXcnoBndLpWN1EcMtmIn+odOwhdWjSrqANijutxuekKEIOco64Jew==)
spring.runlogdatasource.driverClassName=org.h2.Driver
spring.runlogdatasource.platform=h2
spring.runlogdatasource.schema=classpath:schema-h2.sql
Run Code Online (Sandbox Code Playgroud)
对于主数据源,我可以看到它进入了 DataSourceInitializerInvoker,这是它尝试加载架构的地方,但由于没有 schema-all.sql 文件,它跳过了那个文件。但是,我确实有一个 …
我想了解为什么 spring-data-jdbc 提供与 MyBatis 的集成。
我在weblogic server中部署war文件时遇到以下错误.我使用Maven创建了这个.
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
at org.springframework.web.servlet.support.JstlUtils.exposeLocalizationContext(JstlUtils.java:97)
at org.springframework.web.servlet.view.JstlView.exposeHelpers(JstlView.java:135)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:211)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3750)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:252)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Run Code Online (Sandbox Code Playgroud)
我有lib中的jstl-1.2和weblogic中的jstl-1.2.但是获得相同的异常.
我也尝试从war lib文件夹中删除jstl-1.2.即使获得相同的异常.
可能是什么原因?
这是我的pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>se.jo.joassivosWebApp</groupId>
<artifactId>MApp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>MApp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version> …Run Code Online (Sandbox Code Playgroud)您好,我有一个使用内存数据网格的 150GB 堆内存程序。运营部门对我提出了使用单台机器的疯狂要求。现在我们都知道如果并行垃圾收集器使用超过 150GB 时会发生什么,如果调用 FULL GC,可能会需要数十分钟的垃圾收集。
我希望 Java 9 能够推出 Shenandoah 低暂停 GC。不幸的是,据我所知,它没有在 Java 9 中列出。有人对此了解吗?
尽管如此,我想知道 G1 GC 对于这么大的堆内存将如何执行。
最后一个问题。因为我有非交互式批处理应用程序,应该在 2 小时内完成,所以可以说。这里的主要目标是确保 Full GC 永远不会启动。如果我确保有足够的内存,假设可以达到的最大堆为 150,并且我分配了 250GB,我可以很有信心地说 Full GC GC 永远不会启动还是?通常如果新生代+老生代达到最大堆就会触发full GC。可以用不同的方式触发吗?
有一个重复的请求,我将尝试在这里解释为什么这个问题不是重复的。首先我们讨论的是 150GB 堆,它为问题添加了完全不同的维度。其次,我不使用 RMI,因为它是在提到的问题中,第三,我在字里行间询问有关 G1 垃圾收集器的问题。此外,一旦我们超出 32GB 堆屏障,我们就会进入 64 位地址空间,你无法让我相信关于<32GB堆的问题与关于堆>32GB的问题是相同的,更不用说自从Java 7(例如PermSpace)不存在以来,事情已经发生了一些变化。
我目前有一个带有 @Async 方法的 Spring 服务,因此当调用它时,Spring 在新线程中执行它,而不需要父线程的请求属性。
我需要一种方法在调用异步服务时将这些属性复制到子线程。
有没有什么方法可以添加 Spring 在创建新线程时调用的某种拦截器类,我可以在其中放置逻辑来复制相关的上下文值?
理想情况下,我想避免在方法参数中传递值。
我有一些IMDG经验,对KAFKA来说还很陌生。我正在尝试了解Kafka的用例。我了解这是一个流媒体/消息平台。它的许多问题在现代的In Memory Data Grids中都有一些对立部分。当有人希望使用Kafka和您希望使用IMDG时,您能否对用例进行一些说明?我需要画一个平行线。
我举一个例子。我注意到使用Kafka进行数据复制。尽管可能,但我认为IMDG在此方面更加强大和自动化。
我也对这两种技术如何相互补充感兴趣,因为我认为它们并不是直接竞争。
I've read that jvisualVm can do tracing profile.
So I ran jvisualVm on my local pc and I see following:

According the materials I read that jvisualVm allows to use tracing profiling on Profiler tab and it must look like:
But as you can see I don't have it. I tried to find button to show that tab but I was not successful.
How can I enable it?
P.S.
According the @Alexandar Petrov answer I tried to add plugun manually …
java ×10
spring ×3
spring-data ×3
spring-boot ×2
aop ×1
apache-kafka ×1
axis2 ×1
database ×1
debugging ×1
hazelcast ×1
hibernate ×1
ignite ×1
infinispan ×1
interceptor ×1
java-9 ×1
jdbc ×1
joda-money ×1
jpa ×1
jsp ×1
jvisualvm ×1
jvm ×1
maven ×1
mybatis ×1
performance ×1
profiling ×1
servlets ×1
trace ×1
web-services ×1
weblogic ×1
wsdl2java ×1
xmlbeans ×1