小编dre*_*nda的帖子

Hibernate 4使用java.time.LocalDate和DATE()构造

我正在尝试在我的应用程序中使用LocalDate和LocalDateTime与Java 8.我正在使用Hibernate 4.3.5和Spring.我在这里关注了这个有趣的教程,但是当我使用DATE()构造时,我遇到了一个问题.

当我尝试做的时候:

SELECT * FROM TABLE WHERE DATE(data)=DATE(:data)
Run Code Online (Sandbox Code Playgroud)

如果我手动创建的查询(复制和过去的查询Hibernate打印)工作正常,我总是一个空列表.我认为问题是Hibernate在内部进行的转换; 它尝试将LocalDate转换为java.util.Date.我告诉这个,因为如果我以这种方式更改查询:

SELECT * FROM TABLE WHERE DATE(data)=:data
Run Code Online (Sandbox Code Playgroud)

我有这个例外:

java.lang.IllegalArgumentException: Parameter value [2014-05-27T00:00] did not match expected type [java.util.Date (n/a)]
at org.hibernate.jpa.spi.BaseQueryImpl.validateBinding(BaseQueryImpl.java:885)
at org.hibernate.jpa.internal.QueryImpl.access$000(QueryImpl.java:80)
at org.hibernate.jpa.internal.QueryImpl$ParameterRegistrationImpl.bindValue(QueryImpl.java:248)
at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:631)
at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:180)
at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:49)
at it.AppuntamentoCustomRepositoryImpl.findAppuntamenti(AppuntamentoCustomRepositoryImpl.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:64)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy91.findAppuntamenti(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native …
Run Code Online (Sandbox Code Playgroud)

java hibernate java-8

29
推荐指数
3
解决办法
2万
查看次数

Hibernate DefaultEntityAliases引发NullPointerException

我正在使用Spring Boot,Spring Data REST,Hibernate(5.2.12.Final),我将我的存储库公开为REST服务.

我有一个问题,一个引发NullPointerException的查询,我不明白原因.我通过HTTP请求调用此方法(这由Spring Data REST公开).

这是代码:

@Transactional(readOnly = true)
@PreAuthorize("isAuthenticated()")
public interface CheckPointRepository extends JpaRepository<CheckPoint, Long> {

@Query(value = "SELECT * FROM CheckPoint WHERE (:name IS NULL OR name LIKE CONCAT('%',:name,'%')) ORDER BY name LIMIT 20", nativeQuery = true)
    public List<CheckPoint> findByNameOrderByNameList(@Param("name") String name);

}
Run Code Online (Sandbox Code Playgroud)

这是堆栈跟踪:

25/01/2018 18:51:42,308 ERROR http-nio-8080-exec-9 RepositoryRestExceptionHandler:168 - null
java.lang.NullPointerException: null
    at org.hibernate.loader.DefaultEntityAliases.intern(DefaultEntityAliases.java:176) ~[hibernate-core-5.2.12.Final.jar:5.2.12.Final]
    at org.hibernate.loader.DefaultEntityAliases.getSuffixedPropertyAliases(DefaultEntityAliases.java:135) ~[hibernate-core-5.2.12.Final.jar:5.2.12.Final]
    at org.hibernate.loader.DefaultEntityAliases.determinePropertyAliases(DefaultEntityAliases.java:77) ~[hibernate-core-5.2.12.Final.jar:5.2.12.Final]
    at org.hibernate.loader.DefaultEntityAliases.<init>(DefaultEntityAliases.java:49) ~[hibernate-core-5.2.12.Final.jar:5.2.12.Final]
    at org.hibernate.loader.ColumnEntityAliases.<init>(ColumnEntityAliases.java:26) ~[hibernate-core-5.2.12.Final.jar:5.2.12.Final]
    at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.generateCustomReturns(SQLQueryReturnProcessor.java:209) ~[hibernate-core-5.2.12.Final.jar:5.2.12.Final]
    at org.hibernate.loader.custom.sql.SQLCustomQuery.<init>(SQLCustomQuery.java:136) ~[hibernate-core-5.2.12.Final.jar:5.2.12.Final]
    at org.hibernate.engine.query.internal.NativeQueryInterpreterStandardImpl.createQueryPlan(NativeQueryInterpreterStandardImpl.java:70) …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-data-jpa spring-data-rest

16
推荐指数
1
解决办法
1679
查看次数

Spring @Value("$ {}")通常为null

我正在使用Spring Boot应用程序.在某些@Component@Value字段中加载,而不是在其他类上null.

似乎在创建/ @Value之后加载了.@Bean@Component

我需要从我的属性文件中加载一些值@Bean.

你有什么建议吗?

java spring spring-bean spring-boot spring-properties

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

IntelliJ上的Lombok @SuperBuilder解决方法

我有一个班级产品:

   @Data?            

   @SuperBuilder
   public class Product {

        private String name;
        private String manufacturer;

   }
Run Code Online (Sandbox Code Playgroud)

和一个扩展的类

@Data?    

@SuperBuilder

public class Frame extends Product{

   private String model;

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用生成器创建一个Frame对象:

 return Frame.builder()?        
        .name("Frame ABC")?        
        .manufacturer("Manufacturer")?        
        .model("Model 1")?        
        .build();
Run Code Online (Sandbox Code Playgroud)

我正在将IntelliJ 2019.1.1与lombok插件一起使用,但不幸的是编译器将.name()和.manufacturer()方法标记为错误。我看到这个https://github.com/mplushnikov/lombok-intellij-plugin/issues/513问题已打开,我想知道是否有解决方法可以使我的代码正常工作。

java lombok intellij-lombok-plugin

11
推荐指数
1
解决办法
4196
查看次数

Spring引导转换web.xml监听器

我正在尝试将我的项目转换为Spring Boot项目(嵌入Jetty的可执行jar文件).所有工作都使用标准示例,但我希望将旧的web.xml迁移到Spring Boot.

我迁移了Servlet和过滤器,但我不明白如何迁移过滤器:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
    <listener-class>org.granite.config.GraniteConfigListener</listener-class> 
</listener> 
    <listener>
    <listener-class>org.granite.gravity.websocket.GravityWebSocketDeployer</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

我创建了@SpringBootApplication类,并在所有配置中编写:

@Bean
@Order(1)
public FilterRegistrationBean springSecurityFilterChain() {     
    FilterRegistrationBean filterRegBean = new FilterRegistrationBean();
    DelegatingFilterProxy delegatingFilterProxy = new DelegatingFilterProxy();
    filterRegBean.setFilter(delegatingFilterProxy);
    List<String> urlPatterns = new ArrayList<String>();
    urlPatterns.add("/*");
    filterRegBean.setUrlPatterns(urlPatterns);
    return filterRegBean;
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释我应该如何转换听众?

spring web.xml listener spring-boot

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

多租户应用程序中的连接池。共享池与每个租户的池

我正在使用 Spring 2.x、Hibernate 5.x、Spring Data REST、Mysql 5.7 构建多租户 REST 服务器应用程序。\nSpring 2.x 使用 Hikari 进行连接池。

\n\n

我将使用每个租户的数据库方法,因此每个租户都将拥有自己的数据库。

\n\n

我以这种方式创建了我的 MultiTenantConnectionProvider:

\n\n
@Component\n@Profile("prod")\npublic class MultiTenantConnectionProviderImpl implements MultiTenantConnectionProvider {\n    private static final long serialVersionUID = 3193007611085791247L;\n    private Logger log = LogManager.getLogger();\n\n    private Map<String, HikariDataSource> dataSourceMap = new ConcurrentHashMap<String, HikariDataSource>();\n\n    @Autowired\n    private TenantRestClient tenantRestClient;\n\n    @Autowired\n    private PasswordEncrypt passwordEncrypt;\n\n    @Override\n    public void releaseAnyConnection(Connection connection) throws SQLException {\n        connection.close();\n    }\n\n    @Override\n    public Connection getAnyConnection() throws SQLException {\n        Connection connection = getDataSource(TenantIdResolver.TENANT_DEFAULT).getConnection();\n        return connection;\n\n    }\n\n …
Run Code Online (Sandbox Code Playgroud)

java spring amazon-web-services amazon-rds hikaricp

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

OpenApi 生成器不允许内容中有多个架构

我有一个像这样的 OpenAPI 合约:

openapi: 3.0.1
info:
  title: Internal API
  version: ''
tags:
  - name: Calendar
    description: Api for Calendar resource
paths:
  '/api/v1/appointments/{id}':
    get:
      tags:
        - Calendar
      summary: Get the given appointment
      description: Get the given appointment
      operationId: findById
      parameters:
        - name: id
          in: path
          description: The appointment Id
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: Successful operation
          content:
            application/vnd.widget+json:
              schema:
                $ref: '#/components/schemas/AppointmentWidgetDto'
            application/json:
              schema:
                $ref: '#/components/schemas/Appointment'
      
components:
  schemas:
    AppointmentWidgetDto:
      required:
        - contactEmail
        - contactName
        - contactPhone
        - …
Run Code Online (Sandbox Code Playgroud)

swagger openapi swagger-codegen openapi-generator

9
推荐指数
0
解决办法
4057
查看次数

Log4j2登录到用户主文件夹

我正在尝试将log4j2日志保存到用户主文件夹中,因为用户无权写入安装应用程序的位置.

这是我的log4j设置的相关部分.不幸的是它没有解析user.home,所以它创建了运行应用程序的文件夹$ user.home.

    <?xml version="1.0" encoding="UTF-8"?>
<configuration name="defaultConfiguration" status="warn" strict="true" monitorInterval="270">
    <properties>        
        <property name="patternlayout">%d{dd/MM/yyyy HH:mm:ss} %5p %c{1}:%L - %m%n
        </property>
        <property name="filename">${user.home}/niro/logs/niroDesk.log</property>
        <property name="filenamePattern">${user.home}/niro/logs/niroDesk.log-%d{yyyy-MM-dd}.log.gz
        </property>
    </properties>

    <appenders>
        <appender name="Console" type="Console" target="SYSTEM_OUT">
            <layout type="PatternLayout" pattern="${patternlayout}" />
        </appender>

        <!-- Log su file ogni giorno, e mantenimento degli ultimi 5 files -->
        <RollingFile name="File" fileName="${filename}" filePattern="${filenamePattern}" bufferedIO="true" immediateFlush="true" append="true">
            <PatternLayout pattern="${patternlayout}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${user.home}/niro/logs" maxDepth="2">
                    <IfFileName glob="niroDesk*.log.gz" />
                    <IfLastModified age="7d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

        <appender name="AsyncFile" type="async" blocking="true" …
Run Code Online (Sandbox Code Playgroud)

java log4j log4j2

8
推荐指数
1
解决办法
4453
查看次数

使用Spring 4和消息插值配置在ConstraintValidator中注入存储库

我创建了一个小示例项目,以显示我在Spring Boot验证配置及其与Hibernate集成时遇到的两个问题.我已经尝试过我发现的有关该主题的其他回复,但遗憾的是它们对我不起作用或者要求禁用Hibernate验证.

我想使用自定义的Validator实现ConstraintValidator<ValidUser, User>并注入我的UserRepository.同时我想保持Hibernate的默认行为,在更新/持久化期间检查验证错误.

我在这里写的是应用程序的完整主要部分.

自定义配置 在这个类中,我使用自定义设置自定义验证器MessageSource,因此Spring将从文件中读取消息resources/messages.properties

@Configuration
public class CustomConfiguration {

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasenames("classpath:/messages");
        messageSource.setUseCodeAsDefaultMessage(false);
        messageSource.setCacheSeconds((int) TimeUnit.HOURS.toSeconds(1));
        messageSource.setFallbackToSystemLocale(false);
        return messageSource;
    }

    @Bean
    public LocalValidatorFactoryBean validator() {
        LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
        factoryBean.setValidationMessageSource(messageSource());
        return factoryBean;
    }

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();
        methodValidationPostProcessor.setValidator(validator());
        return methodValidationPostProcessor;
    }

}
Run Code Online (Sandbox Code Playgroud)

如果不是自定义验证器,那么bean没什么特别之处@ValidUser

@ValidUser
@Entity
public class User extends AbstractPersistable<Long> {
    private static …
Run Code Online (Sandbox Code Playgroud)

spring hibernate hibernate-validator spring-validator

8
推荐指数
1
解决办法
1935
查看次数

Google的语音识别API使用限制

我正在使用谷歌的语音识别API.我用Java创建了一个包装器(像这样:http://pastebin.com/zJEhnJ74); 所有工作都很好,但有时我收到http 403或http 500,所以我认为有一些限制.

我知道这不是官方API,但有人知道服务的限制(一天的最大请求,音频文件的最大长度等)?

speech-recognition

7
推荐指数
1
解决办法
6066
查看次数