org.hibernate.UnknownEntityTypeException: Unable to locate persister: 异常解决

博主查看hibernate.hbm.xml文件的mapping时,发现按住ctrl键无法定位resource指向的xml文件。尝试删除、重写mapping,使用class方式均无效,重启myeclipse后问题神奇解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

org.hibernate.UnknownEntityTypeException: Unable to locate persister: 异常解决


    题主在学习hibernate做测试用例子的时候遇到了一个极其恶心的异常,昨天测试还可以正确运行,今天就不行了,配置文件都没有问题,hibernate.cfg.xml也没有任何问题,题主百度找了大概半个小时的错,几乎崩溃了。

org.hibernate.UnknownEntityTypeException: Unable to locate persister: com.hgh.hibernate.domain.Customer
	at org.hibernate.internal.SessionFactoryImpl.locateEntityPersister(SessionFactoryImpl.java:826)
	at org.hibernate.internal.SessionImpl.locateEntityPersister(SessionImpl.java:2906)
	at org.hibernate.internal.SessionImpl.access$2500(SessionImpl.java:167)
	at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2662)
	at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2648)
	at org.hibernate.internal.SessionImpl.byId(SessionImpl.java:1105)
	at org.hibernate.internal.SessionImpl.get(SessionImpl.java:978)
	at com.hgh.hibernate.test.HibernateTest.test4(HibernateTest.java:98)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

    然后我就去看hibernate.hbm.xml文件的mapping,然后发现竟然mapping中的resource定位的xml文件竟然按住ctrl键定位不到了!!!!!!!
    于是乎就觉得肯定是这里的问题,然后删除了所有的mapping,发现和不删除是一样报这个异常,于是乎,我重新写了一遍mapping,并且也试了使用class的方式,但都发现没有任何卵用!!!!!!
    完犊子了,于是乎重启了myeclipse,神奇的事情发生了,竟然好了,好了,好了!!!!!!一脸蒙逼=_=.
心中一万只草泥马飞过!!!!

### 问题分析与解决方案 在Linux系统中,如果通过包管理器无法找到并安装Docker及其相关组件(如`docker.io`、`docker-compose`、`podman-docker`、`containerd`、`runc`),通常可能涉及以下原因:软件源未正确配置、网络限制或依赖项缺失。以下是详细的解决方法: --- #### 1. **检查并更新APT包索引** 确保APT包索引是最新的,以避免因缓存问题导致的错误。 ```bash sudo apt-get update ``` 此命令会重新同步APT包索引文件[^2]。 --- #### 2. **验证软件源配置** 如果默认的APT源未包含Docker相关的包,则需要手动添加官方或可信的第三方软件源。 - **官方Docker软件源** 配置官方Docker APT源,确保支持当前系统的架构和版本。 ```bash # 添加GPG密钥 sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # 添加APT源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` - **国内镜像源(解决网络限制)** 使用腾讯云或阿里云的Docker镜像源可以显著提升下载速度,并减少因网络问题导致的错误。 ```bash # 腾讯云镜像源 sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 更新APT源 sudo apt-get update ``` --- #### 3. **安装Docker及其相关组件** 完成上述步骤后,尝试重新安装Docker及其相关组件。 ```bash sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` 如果仍无法找到特定包,可以尝试安装替代方案: ```bash sudo apt-get install docker.io sudo apt-get install podman-docker ``` --- #### 4. **处理依赖项问题** 某些情况下,依赖项未满足可能导致安装失败。可以通过以下方式解决: - 安装所有推荐的依赖项: ```bash sudo apt-get install -f ``` - 检查具体依赖项错误并手动安装缺失的依赖项。 --- #### 5. **验证安装结果** 安装完成后,验证Docker是否正常运行。 ```bash sudo docker --version sudo docker run hello-world ``` 如果上述命令成功执行,则说明安装已完成。 --- ### 注意事项 - 确保系统已启用非受限软件源(Universe 和 Multiverse)。可以通过编辑`/etc/apt/sources.list`文件来确认。 - 如果仍然无法解决问题,可以尝试使用脚本化安装工具(如`get-docker.sh`): ```bash curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值