1. 程式人生 > >Hibernate 在進行雙向關聯 時 jUnit不通過 控制檯報錯

Hibernate 在進行雙向關聯 時 jUnit不通過 控制檯報錯

愚蠢的一批0.0   這個問題 困擾了我三天。

當我進行雙向關聯儲存資料時,控制檯報錯

log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Junti 報錯

java.lang.ExceptionInInitializerError
    at com.itheima.test.Demo1.run2(Demo1.java:44)
    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:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [alter table cst_linkman add constraint FKh9yp1nql5227xxcopuxqx2e7q foreign key (lkm_cust_id) references cst_customer (cust_id)]
    at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:59)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlString(SchemaMigratorImpl.java:431)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applySqlStrings(SchemaMigratorImpl.java:420)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.applyForeignKeys(SchemaMigratorImpl.java:386)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:214)
    at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60)
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:133)
    at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:470)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
    at utils.HibernateUtils.<clinit>(HibernateUtils.java:25)
    ... 24 more
Caused by: java.sql.SQLSyntaxErrorException: Table 'hibernate_day03hh.cst_linkman' doesn't exist
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1354)
    at com.mysql.cj.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2127)
    at com.mysql.cj.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1264)
    at org.hibernate.tool.schema.internal.TargetDatabaseImpl.accept(TargetDatabaseImpl.java:56)
    ... 36 more

一開始沒有絲毫頭緒,在檢視java.lang.ExceptionInInitializerError  可能出現的情況的時候 發現是靜態程式碼塊可能出現問題。我聯想到編寫HibernateUtils 獲取 session 是  使用到了 靜態程式碼塊  但是沒有找到解決的辦法。  於是先去解決控制檯的問題。(借鑑:https://stackoverflow.com/questions/12532339/no-appenders-could-be-found-for-loggerlog4j)  後面去讀控制檯曝出的日誌時 發現可能是資料庫中沒有我要操作的雙向關聯那兩張表的原因   於是我去建立兩張表後 再執行程式   Junit通過。。

疑問: Hibernate框架按道理是 沒有表時 應該自動建立表才對啊 。。 為什麼必須有表的情況下 才能進行雙向關聯。

相關推薦

Hibernate進行雙向關聯 jUnit通過 控制檯

愚蠢的一批0.0   這個問題 困擾了我三天。 當我進行雙向關聯儲存資料時,控制檯報錯 log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please ini

Hibernate使用createSqlQuery進行模糊查詢到數據

hql slist org 結果 reat nbsp ring 模糊查詢 div 1. 首先明確一點,使用createSqlQuery如下兩種方式的占位符都可以使用,這個在官方的文檔可以查到。 註意使用模糊查詢時,賦值兩邊不可以添加單引號。 Query query

hibernate one2many (雙向關聯)

gif pro ng- utf-8 getc div sed .class blog 跟單向關聯僅有幾處不同: 1從多的一方加入新的屬性 package com.cnblogs.hibernate_first; public class Student { p

Maven -- 在進行war打包排除需要的文件

col log plugin 進行 str nbsp pan clu span https://blog.csdn.net/zsg88/article/details/78128603 <excludes> <!-- 排除文件,不包含子目錄,對W

JS和Java在對中文進行MD5加密一致問題解決

最近和前端同學除錯,發現我這裡總是無法驗證通過,因為他傳給我的MD5和我生成的MD5總是對不上。但是一開始的時候,我是驗證了兩邊的方法的,以test為例在頁面的console中輸入MD5('test')則輸出結果為098f6bcd4621d373cade4e832627b4f

hibernate關聯查詢物件設定int型別

例如:A,B表,left join左表關聯,B表少條關聯資料,如果B表中有int型別,在物件中要用Integer包裝類,否則關聯查詢時int型別不能為null就會報錯,Integer有null值就沒問題

Linux使用yum命令安裝軟體,連線了網路:ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"

錯誤: 解決方案: 在/etc/sysconfig/network-scripts/ifcfg-eth0檔案中配置DNS資訊: vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 進入檔案編輯 修改(新增DNS): DNS1=8.8.

常量加引號提示‘參數**沒有默認值’

選中 需要 ron img ges style sql語句 bsp nbsp 問:sql語句中常量不加引號報錯提示‘參數**沒有默認值’; 解決方法: 如下圖所示加上英文狀態下的引號; 字符串 要加上 單引號;‘‘單引號 算一個 ; 問:為何選中這列不需要加引

傳參Url中有中文

head 無效 解釋 content uri 就會 invalid ins character url中如果傳了中文,瀏覽器會報錯:The header content contains invalid characters。 原因:瀏覽器自動把這個url進行decodeU

react-native run-android SDK location not found.

not 自動創建 per 解決 not found -a 原因 and 報錯 報錯 原因 缺少local.properties文件(SDK location) 解決 方法一:在android Studio中打開項目android目錄,會自動創建local.properti

vue v-for 遍歷循環的key值的

bsp ive using IT void 對象 key值 索引 AR 問題如下: [Vue warn] Avoid using non-primitive value as key, use string/number value instead. non-pr

Hibernate主鍵生成策略strategy = "increment"違反唯一性約束

block 一個 blog tps 發現 rate 51cto image 主鍵 背景2018年7月份,系統爆出一條bug。就是支持Excel導入的功能,導入第二次同模板不同數據時,報錯,違反唯一性約束。就死活用不了了,重啟Tomcat才能恢復使用。但只能到一個文件 分析需

解決:oracle+myBatis ResultMap 類型為 map 返回結果中存在 timestamp 使用 jackson 轉 json

得到 了解 strong asn oid style 就是 put ted 前言:最近在做一個通用查詢單表的組件,所以 sql 的寫法就是 select *,然後 resultType="map" ,然後使用 jackson @ResponseBody 返回前端報錯。 轉

npm 安裝擴展模塊,因緩存的問題匯總

errno -s lean color nbsp 擴展 運行 clean expected 1、緩存報錯問題一 : unexpected end of file 解決方法:運行:npm cache verify 清除緩存 2、緩存報錯問題二 : errno

【Java】import org.junit.Test 和@Test

【問題描述】        Java專案中匯入import org.junit.Test 和使用@Test時報錯。 【解決辦法】        1、在MyEclipse或Eclipse專案中右擊屬性選擇【

mysql 8.0 遠端連上navicate

  發現是加密方式的問題 原來新版的mysql的加密方式不同於5.7 http://binary-space.iteye.com/blog/2412769 參考上面這篇文章 類似這種方法 換個加密方式就行了 ALTER USER 'root'@'%' IDENTI

dotnetcore ef 呼叫多個數據庫使用者命令執行操作

dotnetcore ef 呼叫多個數據庫時使用者命令執行操作報錯 1、多個DbContext 時報錯: 報錯: More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for

WebSphere 控制檯開,:Couldn't flush user prefs

日誌: [10/15/18 10:44:36:038 CST] 00000001 ManagerAdmin I TRAS0017I: The startup trace state is *=info. [10/15/18 10:44:36:907 CST] 00000001 Ad

spring boot junit測試的時候MockServerContainer does not support addEndpoint

在編寫junit測試spring boot專案的時候報錯MockServerContainer does not support addEndpoint  然自己在@SpringBootTest中加上SpringBootTest.WebEnvironment.RANDOM_PORT成功解決

使用springboot contraller中findById 方法問題

在書寫springboot的contraller時 出現了 findById和findOne 報錯出紅。 經過查詢一番資料後,發現spring boot 2版本中所用的查詢是   findById();  並且在使用的時候會加上一個get()方法