Heim Datenbank MySQL-Tutorial 一步一步升级配置14: Mysql数据库,hibernate.dialect 使用MySQL5_MySQL

一步一步升级配置14: Mysql数据库,hibernate.dialect 使用MySQL5_MySQL

Jun 01, 2016 pm 01:12 PM
数据库表 项目

Hibernate

一步一步升级配置14:Mysql数据库,hibernate.dialect使用org.hibernate.dialect.MySQL5Dialect替代org.hibernate.dialect.MySQLDialect

一.背景:

最近一个项目,使用的hibernatejpa正向生成数据库表主键及索引index

不过,发现一些表, @Entity类里面明明写了index

/**

 * Gets the商品标题,不能超过300字节.

 *

 *@returnthe商品标题,不能超过300字节

 */

@Column(name ="TITLE", length = 300)

@Index(name ="I_PRODUCT_ITEM_TITLE")

publicStringgetTitle() {

returntitle;

}

但是生成的数据库表, title字段却没有索引

二.故障排查

2.1 checkcolumn type

检查了下这张表的title字段,发现  title字段的类型是longtext



 

2.2 check create index log

并且执行,hibernate.hbm2ddl.autoupdate的时候,发现log 里面有这么两句

19:56:36.352 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - create index I_PRODUCT_ITEM_TITLE on T_PRODUCT_ITEM (TITLE)

19:56:36.389 [main] ERROR o.h.tool.hbm2ddl.SchemaUpdate -Unsuccessful: create index I_PRODUCT_ITEM_TITLE on T_PRODUCT_ITEM (TITLE)

longtext类型的字段,不可以创建索引

2.3 try fix(尝试1):

我将length改成200,成功创建了varchar(200)的字段



 

     并且成功创建了索引

20:04:57.481 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - alter table T_PRODUCT_ITEM add column TITLE varchar(200)

20:04:57.768 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - create index I_PRODUCT_ITEM_TITLE on T_PRODUCT_ITEM (TITLE)

2.4 try fix(尝试2):

我将length改成260,又是longtext类型



 

2.5 try fix(尝试3):

       多次尝试,发现临界点在length255

三.思考:

3.1如果要交差,那么让大家把所有>255的字段的长度都改成255

但是这不是我的性格,我的性格是"事出反常必有妖"

3.2问题是,为毛length>255的字段生成的表字段却是longtext类型的?

原以为是我的hibernate/hibernate-annotations版本(3.5.1-Final)太低了,

我尝试了升级到3.6.10-Final/3.5.6-Final,结果还是longtext类型

后来一想,肯定是hibernatemapping mysql数据库,生成表的地方有问题,就想看看String和数据库字段匹配的地方

我们原来使用的是 org.hibernate.dialect.MySQLDialect

四.源码:

4.1 org.hibernate.dialect.MySQLDialect

源码中:

 

 

原来在这里,如果长度

否则创建longtext类型

这里有个文章: http://dev.mysql.com/doc/refman/5.0/en/char.html

在mysql5.0.3之前,varchar最大长度是255,在5.0.3之后的版本是65535长度



 

4.2 org.hibernate.dialect.MySQL5Dialect

源码中,还有个MySQL5Dialect

如果长度

否则创建longtext类型

 

 

尝试着将sessionFactoryhibernateProperties中的hibernate.dialect换成org.hibernate.dialect.MySQL5Dialect

 (扩展阅读: 开箱即用(配置过程),使用spring减少配置hibernate mapping的痛苦(AnnotationSessionFactoryBean))



 

重新执行hibernate.hbm2ddl.autoupdate

20:24:31.375 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - alter table T_PRODUCT_ITEM add column TITLE varchar(300)

20:24:31.661 [main] DEBUG o.h.tool.hbm2ddl.SchemaUpdate - create index I_PRODUCT_ITEM_TITLE on T_PRODUCT_ITEM (TITLE)



 

成功创建varchar(300)字段,并且成功创建索引



 

参考:

      http://dev.mysql.com/doc/refman/5.0/en/char.html

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kann KI Fermats letzten Satz überwinden? Der Mathematiker gab fünf Jahre seiner Karriere auf, um 100 Beweisseiten in Code umzuwandeln Kann KI Fermats letzten Satz überwinden? Der Mathematiker gab fünf Jahre seiner Karriere auf, um 100 Beweisseiten in Code umzuwandeln Apr 09, 2024 pm 03:20 PM

Fermats letzter Satz steht kurz davor, von der KI erobert zu werden? Und das Bedeutsamste an der ganzen Sache ist, dass der letzte Satz von Fermat, den die KI gerade lösen wird, genau dazu dient, zu beweisen, dass KI nutzlos ist. Früher gehörte die Mathematik zum Bereich der reinen menschlichen Intelligenz; heute wird dieses Gebiet von fortschrittlichen Algorithmen entschlüsselt und mit Füßen getreten. Bild Der letzte Satz von Fermat ist ein „berüchtigtes“ Rätsel, das Mathematikern seit Jahrhunderten Rätsel aufgibt. Es wurde 1993 bewiesen, und jetzt haben Mathematiker einen großen Plan: den Beweis mithilfe von Computern nachzubilden. Sie hoffen, dass etwaige logische Fehler in dieser Version des Beweises durch einen Computer überprüft werden können. Projektadresse: https://github.com/riccardobrasca/flt

Ein genauerer Blick auf PyCharm: eine schnelle Möglichkeit, Projekte zu löschen Ein genauerer Blick auf PyCharm: eine schnelle Möglichkeit, Projekte zu löschen Feb 26, 2024 pm 04:21 PM

Titel: Erfahren Sie mehr über PyCharm: Eine effiziente Möglichkeit, Projekte zu löschen. In den letzten Jahren wurde Python als leistungsstarke und flexible Programmiersprache von immer mehr Entwicklern bevorzugt. Bei der Entwicklung von Python-Projekten ist es entscheidend, eine effiziente integrierte Entwicklungsumgebung zu wählen. Als leistungsstarke integrierte Entwicklungsumgebung stellt PyCharm Python-Entwicklern viele praktische Funktionen und Tools zur Verfügung, darunter das schnelle und effiziente Löschen von Projektverzeichnissen. Im Folgenden konzentrieren wir uns auf die Verwendung von delete in PyCharm

Teilen Sie eine einfache Möglichkeit zum Paketieren von PyCharm-Projekten Teilen Sie eine einfache Möglichkeit zum Paketieren von PyCharm-Projekten Dec 30, 2023 am 09:34 AM

Teilen Sie die einfache und leicht verständliche PyCharm-Projektpaketierungsmethode. Mit der Popularität von Python verwenden immer mehr Entwickler PyCharm als Hauptwerkzeug für die Python-Entwicklung. PyCharm ist eine leistungsstarke integrierte Entwicklungsumgebung, die viele praktische Funktionen bietet, die uns helfen, die Entwicklungseffizienz zu verbessern. Eine der wichtigen Funktionen ist die Projektverpackung. In diesem Artikel wird auf einfache und leicht verständliche Weise vorgestellt, wie Projekte in PyCharm verpackt werden, und es werden spezifische Codebeispiele bereitgestellt. Warum Paketprojekte? Entwickelt in Python

Praktische Tipps für PyCharm: Konvertieren Sie ein Projekt in eine ausführbare EXE-Datei Praktische Tipps für PyCharm: Konvertieren Sie ein Projekt in eine ausführbare EXE-Datei Feb 23, 2024 am 09:33 AM

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung, die eine Fülle von Entwicklungstools und Umgebungskonfigurationen bietet und es Entwicklern ermöglicht, Code effizienter zu schreiben und zu debuggen. Bei der Verwendung von PyCharm für die Python-Projektentwicklung müssen wir manchmal das Projekt in eine ausführbare EXE-Datei packen, um es auf einem Computer auszuführen, auf dem keine Python-Umgebung installiert ist. In diesem Artikel wird erläutert, wie Sie mit PyCharm ein Projekt in eine ausführbare EXE-Datei konvertieren, und es werden spezifische Codebeispiele aufgeführt. Kopf

So erstellen Sie eine Einkaufsliste in der iOS 17-Erinnerungs-App auf dem iPhone So erstellen Sie eine Einkaufsliste in der iOS 17-Erinnerungs-App auf dem iPhone Sep 21, 2023 pm 06:41 PM

So erstellen Sie eine Einkaufsliste auf dem iPhone in iOS17. Das Erstellen einer Einkaufsliste in der Erinnerungen-App ist sehr einfach. Sie fügen einfach eine Liste hinzu und füllen sie mit Ihren Artikeln. Die App sortiert Ihre Artikel automatisch in Kategorien und Sie können sogar mit Ihrem Partner oder Ihrer Wohnungspartnerin zusammenarbeiten, um eine Liste der Dinge zu erstellen, die Sie im Geschäft kaufen müssen. Hier sind die vollständigen Schritte dazu: Schritt 1: iCloud-Erinnerungen aktivieren So seltsam es auch klingen mag, Apple sagt, dass Sie Erinnerungen von iCloud aktivieren müssen, um eine Einkaufsliste unter iOS17 zu erstellen. Hier sind die Schritte dafür: Gehen Sie zur App „Einstellungen“ auf Ihrem iPhone und tippen Sie auf [Ihr Name]. Wählen Sie als Nächstes i aus

Basierend auf dem Open-Source-Web-UI-Projekt ChatGPT können Sie schnell Ihre eigene ChatGPT-Site erstellen Basierend auf dem Open-Source-Web-UI-Projekt ChatGPT können Sie schnell Ihre eigene ChatGPT-Site erstellen Apr 15, 2023 pm 07:43 PM

Als Technologie-Blogger bevorzuge ich ChatGPT, um eine Verbindung zu WeChat, DingTalk und Knowledge Planet herzustellen (falls Sie es noch nicht gesehen haben, können Sie den vorherigen Artikel lesen, den ich kürzlich gelesen habe). Quellprojekte, ein ChatGPTWebUI-Projekt entdeckt. Da ich ChatGPT noch nie zuvor mit WebUI verbunden habe, ist es wirklich gut, dieses Open-Source-Projekt nutzen zu können. Hier sind die praktischen Installationsschritte, die ich mit allen teilen kann. Der Installationsbeamte stellt in der Projektdokumentation von Github viele Installationsmethoden bereit, darunter manuelle Installation, Docker-Bereitstellung und Remote-Bereitstellung. Es ist erstaunlich, dass ich bei der Auswahl einer Bereitstellungsmethode zunächst an Einfachheit gedacht habe.

Was tun, wenn beim Starten des React-Projekts ein Fehler auftritt? Was tun, wenn beim Starten des React-Projekts ein Fehler auftritt? Dec 27, 2022 am 10:36 AM

Lösung des Fehlers beim Starten des React-Projekts: 1. Geben Sie den Projektordner ein, starten Sie das Projekt und sehen Sie sich die Fehlermeldung an. 2. Führen Sie den Befehl „npm install“ oder „npm install React-Scripts“ aus. 3. Führen Sie „npm install“ aus @ant-design/ pro-field --save"-Befehl.

PyCharm-Tutorial: Wie entferne ich Elemente in PyCharm? PyCharm-Tutorial: Wie entferne ich Elemente in PyCharm? Feb 24, 2024 pm 05:54 PM

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung (IDE), die umfangreiche Funktionen bietet, die Entwicklern helfen, Python-Projekte effizienter zu schreiben und zu verwalten. Bei der Entwicklung von Projekten mit PyCharm müssen wir manchmal einige Projekte löschen, die nicht mehr benötigt werden, um Speicherplatz freizugeben oder die Projektliste zu bereinigen. In diesem Artikel wird detailliert beschrieben, wie Projekte in PyCharm gelöscht werden, und es werden spezifische Codebeispiele bereitgestellt. So löschen Sie ein Projekt: Öffnen Sie PyCharm und rufen Sie die Projektlistenoberfläche auf. In der Projektliste

See all articles