2023年3月

Hibernate注解与JPA - charming的专栏 - CSDN博客
http://blog.csdn.net/zxc123e/article/details/51499652

之前记录的一些东西,这里贴出来。
JPA(
Java
Persistence API)
JPA注解是JAVAEE的规范和标准,JPA是标准接口,
hibernate
是实现,但是其功能是JPA的超集。一般在实际开发中,优先考虑使用JPA注解,这样更有利于程序的移植和扩展。
Hibernate如何实现与JPA的关系
通过hibernate-annotation, hibernate-entitymanager, hibernate-core这三个组件来实现。

使用注解的目的:为了简化繁琐的ORM文件(*.hbm)的配置


一、类级别注解

@Entity
@Entity(name=”tableName”):映射实体类,name可选,对应
数据库
中的一个表,若表名与实体类名相同,则name可省略。
注意,使用@Entity时必须指定实体类的主键属性。

@Table
@Table(name=””,catalog=””, schema=””):与@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息。Name可选,映射表的名称,若表名与实体类名相同,则name可省略。catalog可选,表示catalog名称,默认为Catalog(“”)。Schema可选,表示schema名称,默认为schma(“”)。
从实现的角度看,各种数据库系统对catalog和schema的支持和实现方式各不一样。

数据库 catalog schema
oracle 不支持 Oracle User ID
mysql 不支持 数据库名
SQL Server 数据库名 对象属主名,2005ban开始有变
DB2 指定数据库对象时,catalog部分省略 Catalog属主名

@Embeddable
@Embeddable表示一个非Entity类可以嵌入到另一个Entity类中作为属性而存在。


二、属性级别注解

添加方式:一、可以在属性字段上添加;二、可以写在属性的get访问器的上面
@id
必须的,定义了映射到数据库表的主键的属性,一个实体类可以有一个或者多个属性被映射为主键,可置于主键属性或者getXxxx()前。
注意:如果有多个属性定义为主键属性,该实体类必须实现serializable接口。

@GeneratedValue
@GeneratedValue(strategy=GenerationType,generator=””):可选,用于定义主键生成策略。
Strategy表示主键生成策略,取值有:
1.GenerationType.AUTO:根据底层数据库自动选择(默认)
2.GenerationType.INDENTITY:根据数据库的Identity字段生成
3.GenerationType.SEQUENCE:使用Sequence来决定主键的取值
4.GenerationType.TABLE:使用指定表来决定主键取值,结合@TableGenerator使用
如:
@Id
@TableGenerator(name=”tab_cat_gen”, allocationSize=1)
@GeneratedValue(Strategy=GenerationType.Table)
Generator-表示主键生成器的名称,这个属性通常和ORM框架相关,如Hibernate可以指定uuid等主键生成方式
将字符串类型的变量设成主键使用下面的注解:
@Id
@GeneratedValue(generator=”sid”)
@GenericGenerator(name=”sid”, strategy=”assigned”) //Hibernate注解
@Column(length=8)

@Column
可将属性映射到列,使用该注解来覆盖默认值,@Column描述了数据库表中该字段的详细定义,这对于根据JPA注解生成数据库表结构的工具非常有作用。
常用属性:
name:可选,表示数据库表中该字段的名称,默认情形属性名称一致。
Nullable:可选,表示该字段是否允许为null,默认为true。
Unique:可选,表示该字段是否是唯一标识,默认为false。
Length:可选,表示该字段的大小,仅对String类型的字段有效,默认值255。
Inserable:可选,表示在ORM框架执行插入操作时,该字段是否应出现INSERT语句中,默认为true。
Updateable:可选,表示在ORM框架执行更新操作时,该字段是否应该出现在UPDATE语句中,默认为true。对于一经创建就不可以更改的字段,改属性非常有用,如对于birthday字段。

@Embedded
@Embedded是注释属性的,表示该属性的类时嵌入类。
注意:同时嵌入类也必须标注@Embeddable注解。

@EmbeddedId
@EmbeddedId使用
嵌入式
主键类实现复合主键。嵌入式主键类必须实现Serializable接口,必须有默认的public无参的构造方法、必须覆盖equals和hashCode方法。

@Transient
可选,表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标识为@Transient,否则ORM框架默认其注解为@Basic。


三、关系映射注解

实体之间的映射关系
1.一对一:一个公民对应一个身份证号码。
2.一对多(多对一):一个公民有多个银行账号。
3.多对多:一个学生有多个老师,一个老师教多个学生。

一对一单向外键
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name=”pid”,unique=true)
注:保存时应该先保存外键对象,再保存主表对象。
这里写图片描述

一对一双向外键
主控方的配置同一对一单向外键关联
被控方在主控方的引用上加上注解:@OneToOne(mappedBy=”card”)
双向关联,必须设置mappedBy属性。因为双向关联关系只能交给一方去控制,不可能在双方都设置外键保存关联关系,否则双方都无法保存。

多对一单向外键
@ManyToOne(cascade={CasecadeType.All},fetch=FetchType.EAGER)
@JoinColum(name=”cid”, referencedColumnName=”CID”)
这里写图片描述

一对多单向外键
一方持有多方集合(一对多)
@OneToMany(cascade={CasecadeType.All},fetch=FetchType.LAZY)
@JoinColum(name=”cid”)
抓取策略:多对一时,多方设置为EAGER;一对多时,一方设置为LAZY。
这里写图片描述

一对多(多对一)双向外键

  • 多方持有一方的引用
    @ManyToOne(cascade={CasecadeType.All},fetch=FetchType.EAGER)
    @JoinColum(name=”cid”)

  • 一方持有多方的集合
    @OneToMany(cascade={CasecadeType.All},fetch=FetchType.LAZY)
    @JoinColum(name=”cid”)
    保存时无论先保存哪一方都可以。

多对多单向外键
学生和教师构成多对多的关联关系。(先保存教师再保存学生)
其中一个多方持有另一个多方的集合对象(这里让学生持有教师的集合)
创建中间表
这里写图片描述

多对多双向外键
双方持有对方的集合对象,其中一方设置
@ManyToMany(mappedBy=”teachers”)
这里写图片描述

Hibernate所鼓励的7大措施
尽量使用many-to-one,避免使用单向one-to-many
Hibernate鼓励使用双向一对多关联,不使用单向一对多关联。单向一对多关联映射是在one端维护关系的,必须先保存many端后才可以保存one端,所以在保存many端时该端不知道one端是否有响应的数据,所以只能将维护的字段设为null,如果非空则无法保存。因为one端维护关系,所以在保存one时,会发出多余的update语句维护many端的外键关系。
灵活使用单向one-to-many
不用一对一,使用多对一代替一对一
配置对象缓存,不使用集合缓存
一对多使用Bag,多对一使用set
继承使用显示多态HQL:fromobject polymorphism=”exlicit”避免查处所有对象
消除大表,使用二级缓存

Hibernate_day04

上节内容

1 表与表之间关系回顾

(1)一对多(客户和联系人)

(2)多对多(用户和角色)

2 hibernate一对多操作

(1)一对多映射配置

(2)一对多级联保存

(3)一对多级联删除


4

inverse
属性

3 hibernate多对多操作

(1)多对多映射配置

(2)多对多级联保存(重点)


3

多对多级联删除(了解)

(4)维护第三张表

今天内容

1 hibernate的查询方式

2 对象导航查询

3 hql查询

(1)查询所有

(2)条件查询

(3)排序查询

(4)分页查询

(5)投影查询

(6)聚集函数使用

4 qbc查询

(1)查询所有

(2)条件查询

(3)排序查询

(4)分页查询

(5)统计查询

(6)离线查询

5 hql多表查询

(1)mysql多表查询回顾

(2)hql多表查询

-
内连接、迫切内连接、左外连接、迫切左外连接、右外连接

6 hibernate的检索策略

(1)概念

- hibernate
分成 :立即和延迟查询

-
延迟查询分成:类级别和关联级别延迟

(2)具体操作

H
ibernate
查询方式

1
对象导航查询


1
)根据
id
查询某个客户,再查询这个客户里面所有的联系人

2 OID
查询


1
)根据
id
查询某一条记录,返回对象

3 HQL
查询


1

Query
对象,写
hql
语句实现查询

4 QBC
查询


1

Criteria
对象

5
本地
sql
查询


1

SQLQuery
对象,使用普通
sql
实现查询

对象导航查询

1
查询某个客户里面所有联系人过程,使用对象导航实现

2
代码

OID
查询

1
根据
id
查询记录


1
)调用
session
里面的
get
方法实现

HQL
查询

1 hql

hibernate query language

hibernate
提供一种查询语言,
hql
语言和普通
sql
很相似,区别:普通
sql
操作数据库表和字段,
hql
操作实体类和属性

2
常用的
hql
语句


1
)查询所有:
from
实体类名称


2
)条件查询:
from
实体类名称
where
属性名称
=?


3
)排序查询:
from
实体类名称
order by
实体类属性名称
asc/desc

3
使用
hql
查询操作时候,使用
Query
对象


1
)创建
Query
对象,写
hql
语句


2
)调用
query
对象里面的方法得到结果

查询所有

1
查询所有客户记录


1
)创建
Query
对象,写
hql
语句


2
)调用
query
对象里面的方法得到结果

2
查询所有:
from
实体类名称

条件查询

1 hql
条件查询语句写法:


1

from
实体类名称
where
实体类属性名称
=? and
实体类属性名称
=?

from
实体类名称
where
实体类属性名称
like ?

2
代码

模糊查询

排序查询

1 hql
排序语句写法


1

from
实体类名称
order by
实体类属性名称
asc/desc

分页查询

1 mysql
实现分页


1
)使用关键字
limit
实现

2

hql
中实现分页


1
)在
hql
操作中,在语句里面不能写
limit

hibernate

Query
对象封装两个方法实现分页操作

投影查询

1
投影查询:查询不是所有字段值,而是部分字段的值

2
投影查询
hql
语句写法:


1

select
实体类属性名称
1,
实体类属性名称
2  from
实体类名称


2

select
后面不能写
*
,不支持的

3
具体实现

聚集函数使用

1
常用的聚集函数


1

count

sum

avg

max

min

2 hql
聚集函数语句写法


1
)查询表记录数

- select count(*) from
实体类名称

QBC
查询

1
使用
hql
查询需要写
hql
语句实现,但是使用
qbc
时候,不需要写语句了,使用方法实现

2
使用
qbc
时候,操作实体类和属性

3
使用
qbc
,使用
Criteria
对象实现

查询所有

1
创建
Criteria
对象

2
调用方法得到结果

条件查询

1
没有语句,使用封装的方法实现

排序查询

分页查询

开始位置计算公式: (当前页
-1

*
每页记录数

统计查询

离线查询

1 servlet
调用
service

service
调用
dao


1
)在
dao
里面对数据库
crud
操作


2
)在
dao
里面使用
hibernate
框架,使用
hibernate
框架时候,调用
session
里面的方法实现功能


3
)在后面
ssh
练习中具体应用

HQL
多表查询

M
ysql
里面多表查询

1
内连接

2
左外连接

3
右外连接

HQL
实现多表查询

Hql
多表查询


1
)内连接


2
)左外连接


3
)右外连接


4
)迫切内连接


5
)迫切左外连接

HQL
内连接

1
内连接查询
hql
语句写法:以客户和联系人为例


1

from  Customer  c  inner  join
c.setLinkMan

返回
list

list
里面每部分是数组形式

2
演示迫切内连接


1
)迫切内连接和内连接底层实现一样的


2
)区别:使用内连接返回
list
中每部分是数组,迫切内连接返回
list
每部分是对象


3

hql
语句写法

- from  Customer  c  inner  join  fetch  c.setLinkMan

HQL
左外连接

1
左外连接
hql
语句:


1

from  Customer  c  left  outer  join
c.setLinkMan


2
)迫切左外连接
from  Customer  c  left  outer  join  fetch
c.setLinkMan

2
左外连接返回
list
中每部分是数组,迫切左外连接返回
list
每部分是对象

1
右外连接
hql
语句:


1

from  Customer  c  right  outer  join
c.setLinkMan

H
ibernate
检索策略

检索策略的概念

1 hibernate
检索策略分为两类:


1
)立即查询:根据
id
查询,调用
get
方法,一调用
get
方法马上发送语句查询数据库


2
)延迟查询:根据
id
查询,还有
load
方法,调用
load
方法不会马上发送语句查询数据,只有得到对象里面的值时候才会发送语句查询数据库

2
延迟查询分成两类:


1
)类级别延迟:根据
id
查询返回实体类对象,调用
load
方法不会马上发送语句


2
)关联级别延迟:

-
查询某个客户,再查询这个客户的所有联系人,查询客户的所有联系人的过程是否需要延迟,这个过程称为关联级别延迟
(默认就是这样)

关联级别延迟操作

1
在映射文件中进行配置实现


1
)根据客户得到所有的联系人,在客户映射文件中配置

2

set
标签上使用属性


1

fetch
:值
select
(默认)


2

lazy
:值

- true
:延迟(默认)

- false
:不延迟

- extra
:极其延迟


1
)调用
get
之后,发送两条
sql
语句


1
)极其懒惰,要什么值给什么值

批量抓取

1
查询所有的客户,返回
list
集合,遍历
list
集合,得到每个客户,得到每个客户的所有联系人


1
)上面操作代码,发送多条
sql
语句

2
在客户的映射文件中,
set
标签配置


1

batch-size
值,值越大发送语句越少

总结:
很多问题是自己认知不够造成的,  -- 问题解决在  修复经历二,可直接跳过去看
修复经历二

首先看你屏幕亮度是集成还是独立显卡决定的(一般是集成),所以下面 修复
经历一
折腾独立显卡驱动没什么作用;

如果安装集成显卡也无作用(或者像 修复
经历二
那样安装时无法验证通过),那也许要考虑是否有其它驱动冲突了。--teamViewer冲突;

intel的集成显卡,如果需要下载最新驱动可以到intel官网下载;

------------------------------------------------

背景
:win10系统,,记得刚安装的时候可以调节的,随着其他软件的安装,后来发现不可以了。曾经因为受不了太亮折腾过多次(屏幕太亮 看久了眼睛受不了),耗时很多都无法解决。

在进入win启动界面之前还是可以快捷键调节的, 进去Windows就不行了 【很多网友有这个问题】;

电脑右下角的操作中心中少了调节亮度的图标。系统设置里面少了调节显示器的亮度级别 的设置界面。


修复经历一:2017年8月30日

1、很久之前就去ThinkPad 官网下载 64版本的独立显卡驱动,因为之前安装过发现不解决问题。

今天想再次安装,发现 安装的 版本是 7674,而设备管理器里看驱动居然不是,

由此证明之前安装并未成功(或者安装成功并未生效)。

下图安装过程的截图:说明,独立的版本是13.7674,集成显卡的 版本是 10.4491


2、决定重新安装,弄清为何版本没有变化为新安装的。发现:本电脑中有两个 驱动路径,一个是C盘C:\DRIVERS\VIDEO ,

一个是在 D盘D:\Program Files\DRIVERS\WIN\VIDEO:原来我最新安装在D盘(怀疑路径问题)

A)将d文件改名,b)卸载原来的驱动 (我将独立和集成的都卸载了)

C)将软件安装到C盘。安装时如果提示目录存在,还是点击进行安装。

完成后目录如下:   居然发现版本无变化


更新独立显卡驱动:更新后,版本变成最新的了,可惜屏幕亮度并未可以调节,重启电脑也不可以,崩溃。【后来也发现,集成显卡的驱动并未变化】

备注:本人在第二次安装此驱动时,发现集成的版本变成最新4991,但独立的并未变成7674,反正哪个不是最新的就去更新那个。

3、安装C盘 路径下的集成驱动的安装文件夹C:\DRIVERS\VIDEO的   exe

发现居然可以调节亮度了,但是此时电脑暂时未重启。待重启后验证 是否可以继续 调节亮度。

目前用着合适的亮度,就是舒服。

经历一 总结:后知后觉,上面的折腾独立驱动没什么作用,能调节的原因:应该是之前某个软件影响了集成显卡驱动了,最后的动作重新安装了一下集成显卡驱动就可以了。

集成显卡的默认安装路径:C:\DRIVERS\VIDEO\Setup.exe

独立显卡驱动的默认安装到的路径:C:\DRIVERS\WIN\VIDEO\

修复经历二:2018年2月26日19:31

再次发现不能调节,再次卸载集成驱动,重启,安装集成驱动发现

弹出异常提示 无法为此计算机验证正在安装的驱动程序  (忘了截图了)

然后自己去百度为什么驱动无法通过验证,(百度了一波,说关闭签名验证,)

IT之家学院:一个命令永久禁用Win10驱动程序强制签名 - Win10系统,驱动程序 - IT之家
https://www.ithome.com/html/win10/196402.htm

最终发现关闭了还是提示这样,最后到Intel 官网下载最新的集成驱动,发现也是无法通过验证。

最后百度网友分享:

(22 条消息)win10亮度无法调节,怎么处理!? - 知乎
https://www.zhihu.com/question/33767047

分享一下我的经验,我的电脑原本好好的,但是在装了TeamViewer之后突然就无法调节亮度了。
卸载TeamViewer以后问题自然就解决了。

P.S. 其实你也可以选择不删teamview,只卸载它自带的驱动 方法如下 在菜单栏里选择 其他 > 选项 > 高级 > "高级网络设置" > "卸载..." 即可

问题解决,

经历二总结:和电脑驱动没有什么问题,是teamViewer 安装了显示器驱动造成笔记本不可以调节亮度。

1
、项目右键 重构:命名;发现有问题。百度得到下面2的解释

2、
百度得到
下面的一二项修改: 原来还有部分名字还是没有改过了的

很多时候、我们需要修改
Java
项目的名字。
1)、如果是java项目,直接F2重命名之后、再在.project 文件里修改项目的名字、刷新即修改完毕。
2)、如果是
Java
web项目,F2重命名之后,点击项目名称、右键会有Properties选项。点击Web Project Settings 选项,右侧Context root修改为你想修改成的名字。若此时还未修改彻底。找到项目的根目录,.settings文件夹里面,在org.eclipse.wst.common.component这个文件里面把项目之前的名字全部替换成你想修改成的名字。回到Eclipse,刷新即修改成功。

3
、完成上面动作还是有问题, web.xml 有错误提示:第一个错误看不懂,第二个错误 大概意思是已经指定过 xmlns属性了。

八月 31, 2017 3:16:39 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]
{Server/Service/Engine/Host/Context}Setting property 'source' to 'org.eclipse.jst.jee.server:
springmvc_mybatis_gxfgs' did not find a matching property.
八月 31, 2017 3:16:39 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server version: Apache Tomcat/8.0.36
八月 31, 2017 3:16:39 下午 org.apache.catalina.startup.VersionLoggerListener log
八月 31, 2017 3:16:41 下午 org.apache.tomcat.util.digester.Digester fatalError
严重: Parse Fatal Error at line 2 column 193: 已经为元素 "web-app" 指定属性 "xmlns"。
org.xml.sax.SAXParseException; systemId: file:/F:/Projects/Java/workspaceTest2/.metadata/.plugins/org.eclipse.
wst.server.core/tmp0/wtpwebapps/springmvc_mybatis_gxfgs/WEB-INF/web.xml; lineNumber: 2; columnNumber: 193; 已经为元素 "web-app" 指定属性 "xmlns"。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)

发现问题:
看不懂,只好将修改前的项目和修改后的 对比:web.xml 文件就变化了:

web xml 提示  Attribute "xmlns" was already specified for element "web-app".

恢复成原来的  web.xml后 即可 启动。

坑爹的 重构 重命名。

=============1011 再次重命名,执行第1 和第2后,还是有问题,最后发现 pom.xml 里面。

举例:将传统本地 javassit-3.17.1-GA.jar包 改成maven引用,pom中 ---Add 输入javassit 搜索

这时候会搜索出超级多
Artifact Id相同 但Group Id不同
的包来(很多第三方的);【这里前提是你先建了远程仓库索引才可以搜出来】

这个时候你就不知道哪个是你需要的了,

慢慢查看版本,他们的命名方式都不一样,总有一个是和你版本相同的版本号,那么这个 jar就是了,这样就可以确认 Group Id了。

http://www.cnblogs.com/rogge7/p/7238974.html--本文有些关于索引的建议

传统javaweb 改成 Maven项目 - 海蓝steven - 博客园
http://www.cnblogs.com/rogge7/p/7300294.html

--------------------------但是

对于上面的jar包本人找到了一个  org.javassist:javassist:bundle:3.17.1-GA 以为是相同的,最终maven项目更新的时候出错了:

Missing artifact org.javassist:javassist:bundle:3.17.1-GA


Could not transfer artifact org.javassist:javassist:bundle:3.17.1-GA from/to mirrors.ibiblio (http://mirrors.ibiblio.org/pub/mirrors/maven2): connect timed out
org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.javassist:javassist:bundle:3.17.1-GA from/to mirrors.ibiblio (http://mirrors.ibiblio.org/pub/mirrors/maven2): connect timed out
    at io.takari.aether.connector.AetherRepositoryConnector$2.wrap(AetherRepositoryConnector.java:895)
at io.takari.aether.connector.AetherRepositoryConnector$
2.wrap(AetherRepositoryConnector.java:1)
at io.takari.aether.connector.AetherRepositoryConnector$GetTask.flush(AetherRepositoryConnector.java:
673)
at io.takari.aether.connector.AetherRepositoryConnector.get(AetherRepositoryConnector.java:
310)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:
520)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:
421)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:
246)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:
367)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:
205)
at org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:
215)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:
188)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:
119)
at org.eclipse.m2e.core.internal.embedder.MavenImpl.readMavenProject(MavenImpl.java:
636)
at org.eclipse.m2e.core.internal.project.registry.DefaultMavenDependencyResolver.resolveProjectDependencies(DefaultMavenDependencyResolver.java:
63)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:
530)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager$
3.call(ProjectRegistryManager.java:492)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager$
3.call(ProjectRegistryManager.java:1)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:
176)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:
151)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:
496)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:
351)
at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:
298)
at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:
154)
at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$
1.call(MavenBuilder.java:89)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:
176)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:
151)
at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:
99)
at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:
86)
at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:
200)
at org.eclipse.core.internal.events.BuildManager$
2.run(BuildManager.java:735)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:
42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
206)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
246)
at org.eclipse.core.internal.events.BuildManager$
1.run(BuildManager.java:301)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:
42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
304)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:
360)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:
383)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:
144)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:
235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:
55)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:
85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:
350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:
206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:
188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:
172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:
392)
at java.net.Socket.connect(Socket.java:
589)
at com.squareup.okhttp.internal.Platform.connectSocket(Platform.java:
100)
at com.squareup.okhttp.Connection.connectSocket(Connection.java:
196)
at com.squareup.okhttp.Connection.connect(Connection.java:
172)
at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:
367)
at com.squareup.okhttp.OkHttpClient$
1.connectAndSetOwner(OkHttpClient.java:128)
at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:
328)
at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:
245)
at com.squareup.okhttp.Call.getResponse(Call.java:
267)
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:
224)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:
195)
at com.squareup.okhttp.Call.execute(Call.java:
79)
at io.takari.aether.okhttp.OkHttpAetherClient.execute(OkHttpAetherClient.java:
167)
at io.takari.aether.okhttp.OkHttpAetherClient.get(OkHttpAetherClient.java:
113)
at io.takari.aether.connector.AetherRepositoryConnector$GetTask.resumableGet(AetherRepositoryConnector.java:
600)
at io.takari.aether.connector.AetherRepositoryConnector$GetTask.run(AetherRepositoryConnector.java:
453)
at io.takari.aether.connector.AetherRepositoryConnector.get(AetherRepositoryConnector.java:
304)
...
37 more

错误提示

----所以,寻找 怎么确定原来jar包的 所有信息呢??

点开原来jar包()里面两个文件目前说明它的坐标。


得到坐标后,不用查找,直接Add 中填入 确定后,保存,项目就会自动更新jar包(或下载),最终会下载到本地仓库中 并引用。

-----

前提是这个jar包是maven创建的,如果是其它创建的,我不知道怎么确认,例如: