小编rak*_*pan的帖子

Spring Data Rest - 按多个属性排序

我有一个实体如下

Class Person{
String id;
String name;
String numberOfHands;
}
Run Code Online (Sandbox Code Playgroud)

使用Spring Data Rest(Gosling Release Train),我可以指定

localhost/Person?sort=name,asc
Run Code Online (Sandbox Code Playgroud)

用于排序名称升序.现在,在我需要按numberOfHands降序排序并命名升序的情况下.我可以指定

localhost/Person?sort=numberOfHands,name,asc
Run Code Online (Sandbox Code Playgroud)

但是,我无法指定

localhost/Person?sort=numberOfHands,desc,name,asc
Run Code Online (Sandbox Code Playgroud)

有没有办法指定多个排序顺序?

谢谢!

spring spring-data spring-data-jpa spring-data-rest

50
推荐指数
2
解决办法
4万
查看次数

IDP启动了SAML登录错误 - 身份验证语句太旧而无法与值一起使用

我们使用ADFS作为IDP,我们的应用程序充当SP.以下是Auth响应示例

<?xml version="1.0" encoding="UTF-8"?>
<Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="_82062d3d-897f-473e-90ad-0bb351d63b22" IssueInstant="2015-04-29T20:39:17.240Z" Version="2.0">
   <Issuer>http://adfs/services/trust</Issuer>
   <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
      <ds:SignedInfo>
         <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
         <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
         <ds:Reference URI="#_82062d3d-897f-473e-90ad-0bb351d63b22">
            <ds:Transforms>
               <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
               <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
            </ds:Transforms>
            <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
            <ds:DigestValue />
         </ds:Reference>
      </ds:SignedInfo>
      <ds:SignatureValue />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
         <ds:X509Data>
            <ds:X509Certificate>certificate..... </ds:X509Certificate>
         </ds:X509Data>
      </KeyInfo>
   </ds:Signature>
   <Subject>
      <NameID>username</NameID>
      <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
         <SubjectConfirmationData InResponseTo="923ki0eg8h7g7y2243fi9jbdd1977j9" NotOnOrAfter="2015-04-29T20:44:17.240Z" Recipient="https://localhost/saml/SSO" />
      </SubjectConfirmation>
   </Subject>
   <Conditions NotBefore="2015-04-29T20:39:17.240Z" NotOnOrAfter="2015-04-29T21:39:17.240Z">
      <AudienceRestriction>
         <Audience>https://localhost/saml/metadata</Audience>
      </AudienceRestriction>
   </Conditions>
   <AuthnStatement AuthnInstant="2015-04-29T20:39:17.162Z" SessionIndex="_92062g3d-897f-473e-90ad-0aa351d63b22">
      <AuthnContext>
         <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthnContextClassRef>
      </AuthnContext>
   </AuthnStatement>
</Assertion>
Run Code Online (Sandbox Code Playgroud)

我面临的问题可分为两种情况:

  1. 闲置1小时后,我在本地注销用户.服务器会话到期是默认值30分钟.如果用户正在积极处理某些事情,我有我的代码每隔10分钟发送一次心跳ping.现在,问题是当用户在会话到期1小时后尝试登录时,我得到以下异常

    Caused by: org.springframework.security.authentication.CredentialsExpiredException: Authentication statement is …
    Run Code Online (Sandbox Code Playgroud)

spring spring-security saml-2.0 spring-saml

12
推荐指数
1
解决办法
1万
查看次数

Spring Boot获取Gradle中包的属性

我试图将我的项目从Maven构建转换为Gradle.该项目目前使用Spring Boot.

在我目前的maven配置中,我有

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-hibernate4</artifactId>
        <version>${jackson.version}</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,jackson.version属性来自Spring Boot pom.现在,在Gradle中,我正在使用Spring Boot插件,我试图使用下面的代码片段.

buildscript {
repositories {
    mavenCentral()
}
dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.4.RELEASE")
}}
    apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'java'

dependencies {
    compile("com.fasterxml.jackson.datatype:jackson-datatype-hibernate4")
}
Run Code Online (Sandbox Code Playgroud)

在上面,我期待spring Boot插件插入jackson-hibernate4模块的版本.但是,这不会发生

有关如何实现这一点的任何想法?我的目的是在整个项目中使用相同版本的jackson构建.

谢谢!

java gradle spring-boot

10
推荐指数
1
解决办法
1411
查看次数

Spring Data REST @Idclass无法识别

我有一个名为EmployeeDepartment的实体,如下所示

@IdClass(EmployeeDepartmentPK.class) //EmployeeDepartmentPK is a serializeable object
@Entity
EmployeeDepartment{

@Id
private String employeeID;

@Id
private String departmentCode;
---- Getters, Setters and other props/columns
}
Run Code Online (Sandbox Code Playgroud)

我有一个Spring Data Repository,如下所示

@RepositoryRestResource(....)
public interface IEmployeeDepartmentRepository extends PagingAndSortingRepository<EmployeeDepartment, EmployeeDepartmentPK> {

}
Run Code Online (Sandbox Code Playgroud)

此外,我有一个注册转换器从String转换为EmployeeDepartmentPK.

现在,对于一个由ID employeeID ="abc123"和departmentCode ="JBG"限定的实体,我希望在调用SDR接口时使用的ID是abc123_JBG.例如,http:// localhost/EmployeeDepartment/abc123_JBG应该获取结果,事实确实如此.

但是,当我尝试使用PUT保存实体时,Spring Data Commons的BasicPersistentEntity类中可用的ID属性的departmentCode值为abc123_JBG.这是错的.我不确定这是否是预期的行为.

请帮忙.

谢谢!

spring hibernate jpa spring-data spring-data-rest

8
推荐指数
2
解决办法
3689
查看次数

具有多个命名参数和结果集的 Hibernate 存储过程调用不起作用

我有一个存储过程,它接受输入列表,然后输出结果集。使用的 DB 是 SQL Server 2008,JPA 2.1 规范提供程序是 Hibernate。

我的实体结构如下:

@NamedStoredProcedureQuery(name = "ModelSearchByModel",
        resultClasses = ModelSearchByModelEntity.class,
        procedureName = "SPR_ModelSearchByModel",
        parameters = {
                @StoredProcedureParameter(mode = ParameterMode.IN, name = "RegionCode", type = String.class),
                @StoredProcedureParameter(mode = ParameterMode.IN, name = "BuildingCode", type = String.class),
                @StoredProcedureParameter(mode = ParameterMode.IN, name = "ProductCode", type = String.class),
                @StoredProcedureParameter(mode = ParameterMode.IN, name = "StatusCode", type = String.class),
                @StoredProcedureParameter(mode = ParameterMode.IN, name = "MinWidth", type = Integer.class),
                @StoredProcedureParameter(mode = ParameterMode.IN, name = "MaxWidth", type = Integer.class),
                @StoredProcedureParameter(mode = ParameterMode.IN, name …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa spring-data spring-data-jpa

6
推荐指数
1
解决办法
8327
查看次数

应用程序会话到期时Spring Security SAML断言到期

我对SAML断言到期与应用程序会话到期感到困惑.

简单来说,当我们在容器中部署应用程序时,会创建一个会话.可以使用web.xml中的以下条目控制此会话到期

<session-config>
    <session-timeout>60</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)

接下来,当我使用SAML扩展的Spring Security时,显然会应用相同的会话概念.(我正在WildFly 8.2中部署应用程序,如果这很重要)

此外,当应用程序会话到期时,注销行为似乎等同于本地注销概念.

到现在为止还挺好.现在让我们说SAML断言好2小时,用户已经积极工作了2个小时.接下来的请求会发生什么?它应该重新登录IDP吗?但是,这对用户来说不方便吗?如果应用程序重定向到IDP以在断言到期2小时后再次登录,那么应如何处理AJAX请求?

这是参考这里的问题

session spring-security saml-2.0 angularjs spring-saml

5
推荐指数
1
解决办法
5550
查看次数

Spring Boot 响应已经提交了请求资源的异常

我正在使用部署在 WildFly 8.2 服务器上的 Spring Boot (v1.2.4)。在应用程序中,我使用的是 font awesome v4.3。

对于三个文件,每个文件都小于 100kb,我得到“响应已经提交的异常”,如下所示。

  1. fontawesome-webfont.eot
  2. fontawesome-webfont.woff
  3. fontawesome-webfont.ttf

还有许多其他资源 > 100kb 并且仍然可以成功提供服务。

堆栈跟踪如下

    2015-06-15 15:52:29,547 ERROR [org.springframework.boot.context.web.ErrorPageFilter] (default task-3) Cannot forward to error page for request [/resources/fonts/fontawesome-webfont.eot] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false: java.io.IOException: An established connection was aborted …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc wildfly spring-boot

5
推荐指数
1
解决办法
1万
查看次数

Spring Boot Gradle - 避免在 war 文件中使用 lib 提供的文件夹

我有一个基于 Spring Boot 的应用程序,我正在尝试从 Maven 切换到 Gradle。该应用程序应该构建一个 war 文件,该文件部署到 Web 服务器(在我们的示例中为 WildFly)。

现在,我有一些由 Web 服务器提供的库,因此使用了“providedCompile”范围(用于休眠搜索和 infinispan)。现在,当与 Spring Boot 插件一起使用时,该插件正在创建一个 war 文件,其中所有“providedCompile”库都移到了一个名为“lib-provided”的文件夹中。

我如何避免这种情况?在相同的上下文中,它还将 Spring Boot 加载器类添加到 war 文件中。如果可能的话,我也需要避免这种情况。

请帮忙!谢谢!

gradle spring-boot

5
推荐指数
1
解决办法
1643
查看次数

spring-security-oauth2-自动配置用法

我对以下项目的用法有点困惑:

<dependency>
    <groupId>org.springframework.security.oauth.boot</groupId>
    <artifactId>spring-security-oauth2-autoconfigure</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

该项目似乎需要带有前缀的属性

security.oauth2.client
Run Code Online (Sandbox Code Playgroud)

然而,Spring boot 版本的 Oauth 配置以以下前缀开头

spring.security.oauth2.client
Run Code Online (Sandbox Code Playgroud)

更进一步,oauth2 自动配置项目似乎是

  1. 范围有限,仅支持 1 个客户端
  2. 提供有用的bean类型,如PrincipalExtractor和AuthoritiesExtractor,这些类型在主spring boot oauth项目中似乎不可用。

有人可以向我解释这个自动配置项目的主要目的吗?它是一个样本还是一个有望成为主流的试点项目?

spring-boot spring-security-oauth2

5
推荐指数
1
解决办法
6121
查看次数

语句执行交错与同步方法执行

我在理解synchronized关键字功能方面遇到了一些麻烦.根据java文档和其他教程,可以说当使用synchronized关键字时,在两个线程之间不可能在该方法的语句之间进行交错.

但是,请看下面的代码.

public class LockThread implements Runnable {
     String name;
     public LockThread(String name) {
          this.name = name;
     }
     public static void main(String[] args) {
          new Thread(new LockThread("a")).start();
          new Thread(new LockThread("b")).start();
     }
     public void run() {
          locked(Thread.currentThread().getId());


     }

 synchronized void locked(long l) {
      System.out.println(name+"-"+l +  "---> Printed from "   + Thread.currentThread().getName());
      System.out.println(name+"-"+l +  "---> Printed from "   + Thread.currentThread().getName());
 }

}    
Run Code Online (Sandbox Code Playgroud)

根据我的理解,程序输出应总是以线程0和线程1不应交错的方式进行.但是多次执行这段代码,我得到一个交错的输出..

    With interleaving (Output I expect)
    a-9 ---> Printed from Thread-0
    a-9 ---> Printed from Thread-0
    b-10 ---> Printed from …

java multithreading synchronized

4
推荐指数
1
解决办法
516
查看次数

带有 Java 8 Stream NonUniqueResultException 的 Spring DATA JPA

我定义了一个基于 PagingAndSortingRepository 的存储库来实现以下查询

@Query(" SELECT me FROM CustomerModelEntity me WHERE  me.planNum = :planNum AND me.customerModelStatusCode IN ('AVL','PHO')" +
        " AND me.modelCode IN (SELECT e.modelCode FROM ModelEntity e WHERE e.modelStatusCode IN ('AVL','PHO'))")
Stream<CustomerModelEntity> findByPlanNum(@Param("planNum") String planNum);
Run Code Online (Sandbox Code Playgroud)

结果预计会有多个结果。但是,结果出来是一个例外如下

Caused by: javax.persistence.NonUniqueResultException: result returns more than one elements
    at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:505) [hibernate-entitymanager-4.3.7.Final.jar:4.3.7.Final]
    at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:202) [spring-data-jpa-1.7.2.RELEASE.jar:]
    at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:74) [spring-data-jpa-1.7.2.RELEASE.jar:]
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:97) [spring-data-jpa-1.7.2.RELEASE.jar:]
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:88) [spring-data-jpa-1.7.2.RELEASE.jar:]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:395) [spring-data-commons-1.9.2.RELEASE.jar:]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:373) [spring-data-commons-1.9.2.RELEASE.jar:]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$DefaultMethodInvokingMethodInterceptor.invoke(RepositoryFactorySupport.java:486) [spring-data-commons-1.9.2.RELEASE.jar:]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) [spring-tx-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) …
Run Code Online (Sandbox Code Playgroud)

hibernate java-8 spring-data spring-data-jpa

4
推荐指数
1
解决办法
3008
查看次数

Spring Boot v1.2由于RepositoryInformation引起的AbstractMethodError

我正在构建一个基于Spring Boot v1.2的应用程序.虽然我的应用程序成功启动并执行良好(到目前为止......),但由于AbstractMethodError,我无法使用spring启动框架进行测试.

跟踪的最后几行如下

Caused by: java.lang.AbstractMethodError: org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor.postProcess(Lorg/springframework/aop/framework/ProxyFactory;Lorg/springframework/data/repository/core/RepositoryInformation;)V
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:185)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:239)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:225)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:84)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1627)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1564)
    ... 55 more
Run Code Online (Sandbox Code Playgroud)

为了分析上面的错误,我检查了包含上述类的classpath中的jar文件.所以信息如下

jar:file:/C:/rearch/intellij-workspace/springbootproj/lib/spring-aop-4.1.2.RELEASE.jar!/org/springframework/aop/framework/ProxyFactory.class
jar:file:/C:/rearch/mavenrepo/org/springframework/data/spring-data-commons/1.9.1.RELEASE/spring-data-commons-1.9.1.RELEASE.jar!/org/springframework/data/repository/core/RepositoryInformation.class
jar:file:/C:/rearch/intellij-workspace/springbootproj/lib/spring-data-jpa-1.3.3.jar!/org/springframework/data/jpa/repository/support/LockModeRepositoryPostProcessor.class
jar:file:/C:/rearch/intellij-workspace/springbootproj/lib/spring-test-4.1.2.RELEASE.jar!/org/springframework/test/context/support/DependencyInjectionTestExecutionListener.class
Run Code Online (Sandbox Code Playgroud)

我不确定为什么spring-data-commons来自maven repostory文件夹,而其他的是从项目库提供的.

在我调试时,我同时需要你的帮助来确定上述库之间的版本兼容性.我无法准确指出导致错误的确切原因.请帮忙!

谢谢

spring-test spring-data-jpa spring-boot

3
推荐指数
1
解决办法
1711
查看次数