在这里,我们将给大家分享关于Java项目经验——程序员成长的关键的知识,让您更了解java程序员项目经验怎么写的本质,同时也会涉及到如何更有效地99.9%的程序员都想要有这样的Java项目经验...,
在这里,我们将给大家分享关于Java 项目经验 —— 程序员成长的关键的知识,让您更了解java程序员项目经验怎么写的本质,同时也会涉及到如何更有效地99.9% 的程序员都想要有这样的 Java 项目经验...,真香!、<项目经验> 基于 jpa 封装 BaseDao,BaseService、Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决、Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:的内容。
本文目录一览:- Java 项目经验 —— 程序员成长的关键(java程序员项目经验怎么写)
- 99.9% 的程序员都想要有这样的 Java 项目经验...,真香!
- <项目经验> 基于 jpa 封装 BaseDao,BaseService
- Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决
- Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:
Java 项目经验 —— 程序员成长的关键(java程序员项目经验怎么写)
Java 就是用来做项目的!Java 的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:
1、掌握项目开发的基本步骤
2、具备极强的面向对象的分析与设计技巧
3、掌握用例驱动、以架构为核心的主流开发方法
没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思 考!你必须学会假如你是项目经理,你该如何思考!你必须学会假如你是架构师,你该如何思考!你必须掌握针对某个特定问题领域的分析方法!
关于基础 tb 知识:你可以看看这些名词或知识点,看是否能说出个一二三四来。
JavaSE
---- 基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while
---- 面向对象:class(类)、Object(对象)、instance(实例)、state(状态)、behavior(行为)、 field、method、new、可见性(访问控制)、attribute、property、package、import、static variable、class variable、instance variable、heap、method area、stack、GC(垃圾回收)、override、overload、对象转型 (casting)、多态、this、super
---- 异常处理:理解编译期错误和运行期错误的区别、Exception、RuntimeException、checked exception、unchecked exception、try、catch、finally、throw new XXXException、throws XXXException、异常处理的基本原则
---- 数组与集合:数组的定义和使用方法、Collection、List、Set、Map、ArrayList、HashSet、HashMap、Iterator、equals、hashCode、Comparable、Comparator
---- 常用类:String、intern、常量池、StringBuffer、java.util.Date、SimpleDateFormat、Regex(正则表达式)
---- 反射机制:Class、Method、Field、invoke、newInstance、BeanUtils(apache-commons)、PropertyUtils(apache-commons)
---- 输入输出流:InputStream、OutputStream、Reader、Writer、Adapter 设计模式与原始流类、Decorator 设计模式与包装流类、对象序列化和反序列化
---- 多线程:Thread、Runnable、sleep、wait、notify、synchronized、lock
Servlet 和 JSP
----HttpServlet、doGet、doPost、HttpServletRequest、HttpServletResponse、 request.getParameter ()、request.setAttribute ()、request.getAttribute ()、 request.getSession ()、ServletContext、Filter、web.xml、tomcat、forward 与 redirect、http 协议的无状态性、cookie、JSP Scope Object、<c:out …/>、<c:forEach …>
HTML 与 JavaScript
---- 你需要能够理解常见的网页标签、理解在网页中引入 JavaScript 的方法、以及 JavaScript 的基本语法与使用方法
以上,就是你进一步学习 Java 所必备的基本知识。特别是一些个专业术语和名词,看到这些名词,如果你像看到亲爹一样亲切,那么说明你对 Java 的基础知识就很熟悉了。
接下来是 SSH:
对于初学者来说,这三大框架被赋予了太多神秘的色彩,似乎它们是重中之重的知识!但是对于拥有多年 Java 开发经验的专业技术人员来说,对于那些 Java 牛人来说,却对这三大框架不太感冒!难道它们不重要吗?
现在很多企业都在用这三大框架,所以很多企业也把掌握这三大框架作为招聘的必备条件。不可否认的是,也有很多大型企业没有用这三大框架,这些企业经过多年发展,自身已经有一定的技术积累,也形成了自己独特的技术框架体系。这三大框架既可以说很重要,也可以说不重要。
说重要的原因在于:这三大框架对 JavaEE 开发中所存在的普遍的问题,提供了优美的解决方案,它们蕴含了这个行业中最 NB 的开发人员的努力和想 法,所以,学习这三大框架,你就可以窥探到这些处于技术巅峰的牛人们究竟对一个问题是怎么想的,通过一种什么样的设计思路去解决问题的。所以,对于你来 说,你没有太多项目开发的经验,经验是什么?经验就是你知道可能会遇到哪些问题,针对哪个问题可以有哪些解决方法,在某个情景下,哪种解决方法是较好的, 哪种方法不太好等等!如果你没做过什么项目,你根本就不会去意识到你可能会遇到哪些问题,而这些问题往往又是非常关键的!解决得不好,会影响到你的程序的 稳定性、可扩展性等等!三大框架就给初学者提供了了解你以后可能会遇到哪些问题,以及针对这些问题的解决方案!
当你了解了这三大框架为什么是重要的,那么你也就能理解,为什么这三大框架也可以说是不重要的。如果你曾经开发过很多项目,你碰到了各种各样的问题,凭着你的技术功底,逐个击破了这些问题,在这些人眼里,三大框架(是不是还有 N 个框架?呵呵)都是浮云!
你属于哪一种人呢?如果你没有太多项目开发经验,那么三大框架对于你来说就是非常重要的!而且,由此你也知道了该怎么去学这三大框架。对于三大框架 的学习而言,着力点在于给你展示问题,并触发你自己主动的思考,我们鼓励你提出自己的想法,也许你的想法很白痴,但那毕竟是你自己的想法,如果你不知道牛 人的想法,那你怎么知道自己的想法是很白痴的呢?在这种思想的碰撞过程中,你就会逐渐提高自己!所以,三大框架学完之后,你不应该只是看到一大堆配置文 件,你不应该只是看到了一些 Action,一些 Service,一些映射文件,你不应该只知道 session.save/update/delete,你 不应该只是知道 struts2 中有一堆 interceptor,你不应该只是看到一堆 jar 包……
如果你只是知道拷贝一堆 jar 包,定义一系列配置文件之后,SSH 三大框架就能够运行起来了,也可以给你干活了,那么,很悲哀的是,你仍然没有掌握三大框架的精粹!请你回答以下问题:
Struts2:
为什么每次请求都要创建一个 Action 对象?
ModelDriven 拦截器的配置中 refreshModelBeforeResult 解决了什么问题?
为什么在 web.xml 中配置的 StrutsPrepareAndExecuteFilter 要过滤所有的请求?
请你给我谈谈 ValueStack?
Struts2 是如何实现 MVC 设计模式的?
Spring:
你为什么要用 Spring?
请你聊一聊 IOC/DI?
什么是声明式的事务管理?为什么要使用声明式的事务管理?Spring 如何实现声明式的事务管理?
把 spring 和 hibernate 集成,定义事务管理特性的时候,为何要将除了添加、删除、更新操作之外的方法,即主要执行查询任务的方法定义为 read-only?
Hibernate:
请你谈谈你对 OR 映射的理解?
很多人说 Hibernate 不适合大项目,性能有问题,你是如何理解的?
Hibernate 为什么一定要定义一个数据库标识?
为什么 Hibernate 建议你的实体类实现 hashCode 和 equals 方法?
谈谈你对 Hibernate 实体类中的数据库标识与数据库主键之间关系的认识?
谈谈你对 Hibernate 关联映射与数据库外键之间关系的认识?
调用 session.save () 方法,hibernate 一定会发出 insert 语句吗?谈谈你的理解
调用 session.update () 方法,hibernate 一定会发出 update 语句吗?谈谈你的理解
请你聊一下以下名词、概念或用法:lazy、lazy=”extra”、inverse、fetch、fetch=”join”、fetch=”subselect”、batch-size
配置了 lazy=”true” 一定会实现懒加载吗?
请你谈谈 Hibernate 中的 “N+1” 问题
请你谈谈 Hibernate 有哪些最佳实践?
以上并非 SSH 中全部重点的问题,但它们能考察你能否灵活运用 SSH 框架!如果你能深刻理解这些问题,再配以合适的实战项目训练,你也会逐渐成为牛人!
最后是项目开发能力:
不管你是学 Java 还是别的技术,你的根本目的在于给客户创造价值!否则,你下大力气学习的东西,随着技术的进步和更新,很快就会过时!所以,技术 的核心在于用技术创造有价值的成果!也就是说,客户需要什么,你就要用技术把客户需要的东西给他造出来!一个公司之所以要用各种福利条件极力挽留你,是因 为你能够给公司带来极高的利益!那么,你有什么可以给公司利用的呢?公司最看重你的哪方面的能力呢?
做项目需要的能力很多,其中最核心最基础的就是建模能力(现在最主流的就是面向对象建模!)。什么是建模能力呢?
我给大家一个面试题:
一个保险公司的保险卡管理模块:销售人员领取保险卡信息(保险卡数量、卡号、领取日期),然后直接销售给客户,销售完毕后,将保险卡信息录入保险公 司系统内部(销售人员信息、购买人信息、购买的保险卡数量、卡号等),客户登录保险公司网站激活保险卡,需要填写(保险卡卡号、激活密码、被保险人信息、 受益人信息)
要求就是:如果这个模块交给你来做,你要怎么做?你要解决哪些问题?你可否画个图,给我描述一下你的想法是什么吗?
这只是一个面试题而已,因为只有简单几句话,所以我把它放到这里,让大家感受一下所谓建模要解决什么问题。而业务领域的问题实在是太多了!也许一个几十上百页的需求文档才能把某个业务领域的问题描述清楚,而你的职责就是要把它们实现出来!
某个公司要开发一个考勤管理系统,要求与现有的人力资源系统对接,你是主要的技术负责人,那么,你要做哪些工作呢?
某 ERP 项目要实现一个排班管理模块,交给你去完成,你如何去完成呢?
不要抱怨项目经理给你的信息太少(只有几句话),不要抱怨客户没有描述清楚他们的需求…… 你的价值就在于理顺所有的问题 tb,用各种手段获得你想要的信息,按照一定的思路汇总,并在特定的时间里逐个解决它!
你应该意识到学 Java 不是一个坦克大战、一个网络飞车、一个 CMS、一个 DRP、一个 OA 那么简单,你不要沉迷于那些技术细节(虽然也是有必要 的,但不要转牛角尖),不要满足于实现了 CRUD 式的项目需求(虽然这是基础中的基础),在你的前方,永远有一个目标在那里,需要你去努力追赶!
今后你将面对更加繁杂的需求,你学习项目的唯一目的,就是:学习如何将需求转化为实现,如何对需求进行分析,如何建立概念模型,如何理顺各种概念之 间的关系,如何进行设计,如何选择合适的技术来实现你的设计方案,如何对你的实现进行测试,如何解决你所遇到的形形色色的问题(性能、需求变更等)。当你 真正到公司里面从事了几年开发之后,你就会同意我的说法!
利用 Java 找工作,需要的就是项目经验,项目经验就是理解项目开发的基本过程,理解项目的分析方法,理解项目的设计思路,理解项目的实现技巧,理解项目的测试方法,理解项目中各种问题的解决方案!!!
所以,你该清楚你的目标了!
99.9% 的程序员都想要有这样的 Java 项目经验...,真香!
据统计全球范围内有超过 30 亿部设备运行 Java,90% 的互联网产品使用 Java 进行开发,超过其他任何一种语言。
最新统计报告也证明,Java 程序员可谓是业内薪资最高的程序员之一,所以每年都有很多人在学习 Java,但能拿到高薪的人却并不多!
因为学习 Java 这门语言只是基础,而语言又只是一种工具。
想要找到工作,就需要你能稳定、高效的进行项目开发,在找工作时有项目经验非常重要。
因此,今天给大家分享一个《Java 项目实战 3 天特训营》。
这个特训营会带你开发一个地图可视化项目,涵盖 Java 开发核心知识点,以及项目开发过程中会遇到的常见问题。
能够帮你高效提升项目能力,避开实际开发项目中的大坑,积累项目经验!
而且,伟杰老师还会系统解析千万级并发项目,帮你了解大型并发项目的架构设计,开发及优化流程。
在不进入大厂工作的前提下,就掌握大厂技术部门工作规范!
这个项目特训营不仅能提升你的实战能力和经验,还能学到如何写出清晰、健壮、高效的代码,对就业非常有帮助。
特训营售价一直是 599 元,我给大家搞到 100 个 免费 学习名额,扫描下方二维码,即可快速抢占!
长按 3 秒 即可扫码
本文分享自微信公众号 - java 版 web 项目(java_project)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。
<项目经验> 基于 jpa 封装 BaseDao,BaseService
发现 BaseDao 如果不继承 JpaRepository, 那么很多 jpa 的写法不能用, 比如通过属性名查询, 通过 example 查询. 接口 @query 查询.
发现 BaseDao 继承 JpaRepository, jpa 升级的话会影响代码.
Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决
Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决
IDEA 发现一个奇怪的错误
今天用 IDEA2018.1 运行 SpringBoot 项目报错如下:
Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/metadata/ConfigurationMetadata at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:169)
解决方案:
分下看这个跟 Eclipse 有关,可是这个不是 Eclipse 项目(没有 Eclipse 的 Workspeace 信息),后来查找发现跟 Eclipse 有关设置就是之前自己设置锅编译器,改过来问题得到解决。解决步骤:IDEA 中 File-->settings-->Bulid Execution Deloyment-->Complier-->Java Complier 中的 user complier 有原来的 Eclipse 改为 javac 即可
Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:
如何解决Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:
我用Oracle 19c作为数据库构建了一个Spring Boot应用程序。我已经使用Spring Data Rest和JPA基于数据库中的表和一些简单的端点创建了实体,但是当为所有记录调用数据库时,它从第二条记录开始返回数据,并且当我尝试访问以id为路径的端点时变量以检索单个对象,发生错误。
我用Postman测试我的休息控制器。带有users / 1的Spring Data Rest没有返回任何内容,并且返回404状态。输入URL的EntityManager也不返回任何值,但状态为200。当我尝试从控制器中的JpaRepository findById()调用该方法时,它显示错误500。
User.java
@Entity
@Table(name = "USER")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "USERNAME")
private String username;
@Column(name = "PASSWORD")
private String password;
@ManyToMany(cascade = {CascadeType.DETACH,CascadeType.MERGE,CascadeType.PERSIST,CascadeType.REFRESH},fetch = FetchType.LAZY)
@JoinTable(name = "USER_ROLE",joinColumns = @JoinColumn(name = "USER_ID"),inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
private List<Role> roles;
public User() {
}
public User(String name,String username,String password) {
this.name = name;
this.username = username;
this.password = password;
}
// setters/getters
}
Role.java
@Entity
@Table(name = "ROLE")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@ManyToMany(mappedBy = "roles")
private List<User> users;
public Role() {
}
public Role(String name) {
this.name = name;
}
// setters/getters
}
UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<User,Integer> {
}
application.properties
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:placeholder
spring.datasource.username=placeholder
spring.datasource.password=placeholder
spring.jpa.show-sql=true
hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
UserController.java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserRepository userRepository;
@Autowired
private EntityManager entityManager;
@Transactional
@GetMapping("/")
public List<User> getAll() {
List<User> users = entityManager.createquery("from User",User.class).getResultList();
System.out.println(users);
return users;
}
@Transactional
@GetMapping("/{userId}")
public User getUser(@PathVariable("userId") Integer userId) {
System.out.println("Sended id: " + userId);
return userRepository.findById(userId).get();
}
}
错误消息
Sended id: 1
Hibernate: select user0_.id as id1_2_0_,user0_.name as name2_2_0_,user0_.password as password3_2_0_,user0_.username as username4_2_0_ from user_table user0_ where user0_.id=?
2020-09-19 15:48:27.350 ERROR 18860 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing Failed; nested exception is java.util.NoSuchElementException: No value present] with root cause
java.util.NoSuchElementException: No value present
at java.base/java.util.Optional.get(Optional.java:141) ~[na:na]
at springboot.resources.UserController.getUser(UserController.java:41) ~[classes/:na]
at springboot.resources.UserController$$FastClassBySpringcglib$$344055f.invoke(<generated>) ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.aop.framework.cglibAopProxy$DynamicAdvisedInterceptor.intercept(cglibAopProxy.java:687) ~[spring-aop-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at springboot.resources.UserController$$EnhancerBySpringcglib$$a0145449.getUser(<generated>) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:567) ~[na:na]
at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1040) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:943) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.37.jar:4.0.FR]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.37.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.37.jar:9.0.37]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
at java.base/java.lang.Thread.run(Thread.java:830) ~[na:na]
邮差的结果:
UserController.java:
https://imgur.com/f56A1Ln
https://imgur.com/52fBKS4
https://imgur.com/9Xo5PuO
从Spring Data Rest自动创建的端点:
https://imgur.com/TIGe1Q9
https://imgur.com/1FN4geC
https://imgur.com/klBJLZb
数据库中的数据:https://imgur.com/q4oH9O7
有解决此问题的建议吗?
解决方法
删除@Transaction,希望它能工作。
,我还是java
的新手程序员,但是我会根据我的经验尝试回答
存储库findById
返回Optional
,因此,当您直接使用userRepository.findById(userId).get()
并且对应的userId
不存在时,就会发生异常java.util.NoSuchElementException
。
使用Optional
时,请确保先检查该值是否存在,然后再使用get
。将getUser
方法更改为
@Transactional
@GetMapping("/{userId}")
public User getUser(@PathVariable("userId") Integer userId) {
Optional<User> user = userRepository.findById(userId);
return user.ifPresent() ? user : null;
}
在不存在Response
的情况下,我建议使用HttpStatus 404
对象返回特定的userId
,这是查询byId
操作的标准方式。
关于Java 项目经验 —— 程序员成长的关键和java程序员项目经验怎么写的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于99.9% 的程序员都想要有这样的 Java 项目经验...,真香!、<项目经验> 基于 jpa 封装 BaseDao,BaseService、Error:java: Internal compiler error: java.lang.Exception: java.lang.NoClassDefFoundError 解决、Hibernate不从数据库返回第一条记录 User.java Role.java UserRepository.java application.properties UserController.java 错误消息邮差的结果:的相关知识,请在本站寻找。
本文标签: