1.JPA中EntityManager不能执行建表语句,提示要加事务Error:javax.persistence.TransactionRequiredException: Executing an update/delete query 换成直接连数据库原生操作来解决

2.resources下的文件采用中文命名,读取不到。

3.使用h2数据库在加了认证后不能访问h2后台,登录进去为空白f12看到页面有一个错误提示Sorry, Lynx not supported yet 解决方法: 在安全认证配置config文件中的设置过滤不需要认证方法的第一行添加 http.headers().frameOptions().disable();

4.错误信息:exected single matching bean but found 2: mainDataSourceProperties 使用了多个数据源

解决办法在main函数上配置exclude

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class })

5.JAVA反射强转创建对象

public <T extends StandardTable> T createStandardTable(Class<T> clz)
{
StandardTable table = null;
try {
table = (StandardTable) Class.forName(clz.getName()).newInstance();
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException e) {
throw new SystemException("未取到标准表对象");
}
return (T)table;
}

6.获取实体属性和值

/**
* 获取实体属性
* @param o
* @return
*/
private static String[] getFiledName(Object o) {
Field[] fields = o.getClass().getDeclaredFields();
String[] fieldNames = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
fieldNames[i] = fields[i].getName();
}
return fieldNames;
} /**
* 根据属性名获取属性值
* @param fieldName
* @param o
* @return
*/
private static Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter, new Class[]{});
Object value = method.invoke(o, new Object[]{});
return value;
} catch (Exception e) { return null;
}
}

  

7.在使用spring boot redis缓存后 错误提示 xxx cannot be cast to xxx

注释掉下面的引用问题解决

8.@LastModifiedDate无效

springboot jpa 中@LastModifiedDate无效的原因是没有使用标准save方法进行更新 entityDao.save(e);这样是有效会自动更新数据库里的更新时间字段,自定义hql, sql操作@Query(),entityManager操作均需要自己手动处理

9.hibernate查询后的对象,set后,更新数据库的原因

Hibernate的get和load方法查询出的实体都是持久化对象,拿到该对象后,如果你调用了该对象的set方法,那么在事务递交的时候,Hibernate会把你设置的值自动更新到数据库中。

解决办法:

在获取实体对象后,获得HibernateEntityManager,然后调用获得Session,然后在set完之后用Session的.evict()方法清掉该对象缓存(并非所有对象缓存)该方法的作用是把持久化对象变成托管状态。变成托管状态后,Hibernate就不会再去自动更新该实体。

Hibernate的几种实体状态:

1.瞬态:

一个实体通过new操作符创建后,没有和Hibernate的Session建立关系,也没有手动赋值过该实体的持久化标识(持久化标识可以认为是映射表的主键)。
此时该实体中任何属性的更新都不会反映到数据库表中。
2.持久化:
当一个实体和Hibernate的Session创建了关系,并获取了持久化标识,而且在Hibernate的Session生命周期内存在。
此时针对该实体任何属性的更改都会直接影响到数据库表中一条记录对应字段的更新,即与数据库表同步。
3.脱管:
当一个实体和Hibernate的Session创建了关系,并获取了持久化标识,而此时Hibernate的Session生命周期结束,实体的持久化标识没有被改动过。
针对该实体任何属性的修改都不会及时反映到数据库表中。

关闭session可以使实体从持久化状态转为托管状态。

9.Feign调用报错The bean 'XXX.FeignClientSpecification', defined in null, could not be registered....的解决办法

一种方式在application.yml中配置:

spring:
main:
allow-bean-definition-overriding: true

第二种办法:

可以在@FeignClient注解上添加contextId解决该问题,如:@FeignClient(name="common-service", contextId = "exp")

10.统一不返回某些字段 添加注解 前提是采用的是JackSon进行的序列化以及反序列化

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)

11.springboot

sessionFactory.getCurrentSession() 异常 springboot jpa org.hibernate.HibernateException: No CurrentSessionContext configured!

添加配置信息 解决

spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext

12. JdbcTemplate queryForList方法 通过参数查询数据时 错误

error code [17004]; 无效的列类型; nested exception is java.sql.SQLException: 无效的列类型 

原因:未将args转化为Object[],因为args是List<Object>类型而非Objec[]类型

spring boot项目开发中遇到问题,持续更新的更多相关文章

  1. Spring Boot Web开发中Thymeleaf模板引擎的使用

    这里使用的是idea 1.新建Spring Boot项目 File-->New-->Project...,然后选择左边的Spring Initializr-->Next,可根据自己的 ...

  2. spring boot 项目开发常用目录结构

    在spring boot开发中一些常用的目录划分 转载自https://blog.csdn.net/Auntvt/article/details/80381756: 一.代码层结构 根目录:net.c ...

  3. spring boot项目搭建中遇到的问题

    自己动手搭建一下spring boot的项目,中途遇到了几个问题,在这里记录一下! 一.关于数据库中的表设计的问题 1.设计表的时候一定要添加的两个字段created updated 创建时间与更新时 ...

  4. 基于VS Code创建Spring Boot项目开发REST API(一)

    公司从.NET转向Java不仅仅是简单的代码变成Java,趁此机会对原有的架构和代码重构,融入新的概念和技术.目前通过前后端分离,将后端更多的微服务化.从.NET转向Java我们更多的是用Java开发 ...

  5. Spring Boot常用的注解以及含义<持续更新>

    1.@RestController和@RequestMapping注解 @RestController 和 @RequestMapping 注解是Spring MVC注解(它们不是Spring Boo ...

  6. spring boot + vue + element-ui全栈开发入门——spring boot后端开发

    前言 本文讲解作为后端的spring boot项目开发流程,如果您还不会配置spring boot环境,就请点击<玩转spring boot——快速开始>,如果您对spring boot还 ...

  7. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  8. 后端开发实践——Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  9. Spring Boot项目中使用Mockito

    本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...

随机推荐

  1. mimikaz获取明文密码

    一.windows2008以上不保存明文密码解决办法 mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords& ...

  2. Yacc - 一个生成 LALR(1) 文法分析器的程序

    SYNOPSIS 总览 yacc [ -dlrtv ] [ -b file_prefix ] [ -p symbol_prefix ] filename DESCRIPTION 描述 Yacc 从 f ...

  3. 笔记:Python的浅复制和深复制

    方法copy返回一个新字典,其包含的键-值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而不是副本). >>> x = {"username": ...

  4. C#获取本月开始日期和结束日期

    DateTime dt = DateTime.Now; //本月第一天时间 DateTime dt_First = dt.AddDays( - (dt.Day)); //获得某年某月的天数 int y ...

  5. linux常用命令-4查看文件内容命令

    vi file #打开并浏览文件 grep str /tmp/test #在文件 ‘/tmp/test’ 中查找 “str” grep ^str /tmp/test #在文件 ‘/tmp/test’ ...

  6. python指定概率随机取值 理解np.random.seed()

    python指定概率随机取值参考如下: 下面是利用 np.random.choice()指定概率取样的例子: np.random.seed(0) p = np.array([0.1, 0.0, 0.7 ...

  7. toLocaleString 日期

    new Date().toLocaleString()"2018/5/3 下午3:08:48"

  8. typescript + vue开发遇到的坑

    1,错误 :TS2304: Cannot find name 'require' 在ts使用nodejs,没有安装nodejs的TypeScript定义类型 ,使用require报的错 解决方法:如果 ...

  9. delphi 安卓开发常用

    delphi 安卓开发有几个常用的pas: FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewTex ...

  10. JavaScript做个时间表 Date()

    <span id="shiji"></span><script> window.setInterval("time()",5 ...