我正在尝试在我的应用程序中使用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) 我正在使用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) 我正在使用Spring Boot应用程序.在某些@Component类@Value字段中加载,而不是在其他类上null.
似乎在创建/ @Value之后加载了.@Bean@Component
我需要从我的属性文件中加载一些值@Bean.
你有什么建议吗?
我有一个班级产品:
@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问题已打开,我想知道是否有解决方法可以使我的代码正常工作。
我正在尝试将我的项目转换为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 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) 我有一个像这样的 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) 我正在尝试将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) 我创建了一个小示例项目,以显示我在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) 我正在使用谷歌的语音识别API.我用Java创建了一个包装器(像这样:http://pastebin.com/zJEhnJ74); 所有工作都很好,但有时我收到http 403或http 500,所以我认为有一些限制.
我知道这不是官方API,但有人知道服务的限制(一天的最大请求,音频文件的最大长度等)?
java ×6
spring ×5
hibernate ×3
spring-boot ×2
amazon-rds ×1
hikaricp ×1
java-8 ×1
listener ×1
log4j ×1
log4j2 ×1
lombok ×1
openapi ×1
spring-bean ×1
swagger ×1
web.xml ×1