❶ 關於JPA的一入門問題
一個實體Bean 由實體類和persistence.xml 文件組成。persistence.xml 文件在Jar 文件的META-INF 目錄。persistence.xml 文件指定實體Bean 使用的數據源及EntityManager 對象的默認行為。persistence.xml文件的配置說明如下:
<persistence>
<persistence-unit name="xxx">
<jta-data-source>java:/ MysqlDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
persistence-unit 節點可以有一個或多個,每個persistence-unit 節點定義了持久化內容名稱、使用的數據源名稱及Hibernate 屬性。name 屬性用作設置持久化名稱。jta-data-source 節點用作指定實體Bean 使用的數據源名稱,指定數據源名稱時java:/ 前綴不能缺少,數據源名稱大小寫敏感。properties 節點用作指定Hibernate 的各項屬性,如果hibernate.hbm2ddl.auto的值設為create-drop,在實體Bean 發布及卸載時將自動創建及刪除相應資料庫表。
檢查hibernate.hbm2ddl.auto的配置,如果有,可將這條刪掉
❷ JPA的幾個常用方法
1. persist():將臨時狀態的對象保存進資料庫。【插入一條新記錄】
//由於涉及資料庫增刪改,執行該語句前需啟用事務
entityManager.persist(modelObject);
2.merge():將對象存入資料庫,不同於persist(),merger()對於操作的對象,如果對象存在於資料庫則對對象進行修改,
如果對象在資料庫中不存在,則將該對象作為一條新記錄插入資料庫。
entityManager.merge(modelObject);
3.find()與getReference():查找對象。不同點:
當對象不存在時,find()返回null, getReference()會拋出javax.persistence.EntityNotFoundException異常
4.remove():將對象從資料庫中刪除。
entityManager.remove(entityManager.getReference(ModelObject.class,key));
5.refresh(Object obj):重新從資料庫中讀取數據。
6.contains(Object obj):判斷對象是否在資料庫中存在,返回true \ false。
7.flush():立即寫入資料庫。
執行persist()、merger()時,數據並不是立即寫入資料庫中,
而是由JPA緩存起來,在執行flush()時寫入。
在事務提交的時候,JPA會自動執行flush()一次性保存所有數據。
如果需要立即保存,可手動執行flush()。
setFlushModel():修改EntityManager的Flush模式。
EntityManager的Flush模式默認為FlushModel.AUTO,這種模式下,在執行查詢
(指使用JPQL語句查詢時,不包括find()和getReference()查詢)或事務提交時自動執行flush()。通過setFlushModel( FlushModel f )設置為FlushModel.COMMIT,該模式下只有在事務提交時才會執行flush()寫入資料庫。
❸ mysql資料庫不區分大小寫嗎
可以設置的
在MySQL
中,資料庫和表對就於那些目錄下的目錄和文件。因而,操作系統的敏感性決定資料庫和表命名的大小寫敏感。這就意味著資料庫和表名在
Windows
中是大小寫不敏感的,而在大多數類型的
Unix
系統中是大小寫敏感的。
奇怪的是列名與列的別名在所有的情況下均是忽略大小寫的,而表的別名又是區分大小寫的。
要避免這個問題,你最好在定義資料庫命名規則的時候就全部採用小寫字母加下劃線的組合,而不使用任何的大寫字母。
或者也可以強制以
-O
lower_case_table_names=1
參數啟動
mysqld(如果使用
--defaults-file=...\my.cnf
參數來讀取指定的配置文件啟動
mysqld
的話,你需要在配置文件的
[mysqld]
區段下增加一行
lower_case_table_names=1)。這樣MySQL
將在創建與查找時將所有的表名自動轉換為小寫字元(這個選項預設地在
Windows
中為
1
,在
Unix
中為
0。從
MySQL
4.0.2
開始,這個選項同樣適用於資料庫名)。
當你更改這個選項時,你必須在啟動
mysqld
前首先將老的表名轉換為小寫字母。
❹ linux下rpm 安裝的 mysql表名不區分大小寫
具體操作如下:
一、linux中mysql大小寫詳情:
1、資料庫名嚴格區分大小寫
2、表名嚴格區分大小寫的
3、表的別名嚴格區分大小寫
4、變數名嚴格區分大小寫
5、列名在所有的情況下均忽略大小寫
6、列的別名在所有的情況下均忽略大小寫
二、設置Mysql表名不區分大小寫
1、切換到root用戶
$
su
-
root
2、修改/etc/my.cof配置文件,
#
sed
-i
'/\[mysqld\]/a\lower_case_table_names=1'
/etc/my.cnf
lower_case_table_names參數詳解:
0:區分大小寫
1:不區分大小寫
3、重啟mysql
#
service
mysqld
restart
❺ LINUX中mysql資料庫大小寫區不區分的設置
想修改的話 去配置文件中[mysqld]下面加個參數
lower_case_table_names
•0:區分大小寫
•1:不區分大小寫
Linux中MySQL大小寫詳情:
1、資料庫名嚴格區分大小寫
2、表名嚴格區分大小寫的
3、表的別名嚴格區分大小寫
4、變數名嚴格區分大小寫
5、列名在所有的情況下均忽略大小寫
6、列的別名在所有的情況下均忽略大小寫
❻ 對資料庫的數據進行「忽略大小寫」的查詢
SQL> create table test (name varchar2(20));
表已創建。
已用時間: 00: 00: 00.03
SQL> insert into test values('N');
已創建 1 行。
已用時間: 00: 00: 00.04
SQL> insert into test values('n');
已創建 1 行。
已用時間: 00: 00: 00.00
SQL> commit;
提交完成。
已用時間: 00: 00: 00.04
SQL> select * from test where name like 'N%';
NAME
--------------------
N
已用時間: 00: 00: 00.03
SQL> select * from test where upper(name) like 'N%';
NAME
--------------------
N
n
大體意思應該是這樣,對where里的欄位進行upper或lower的轉換,然後進行查詢即可
❼ MYSQL如何設置大小寫敏感
1、首先打開MYSQL應用程序,進入到操作首頁中。
❽ 如何使用SQL語句來實現忽略大小寫的查詢
反過來就可以了,把所有的字母都換為大寫,或者小寫就可以了。
比如,原來的欄位存儲內容為AAaBVbgtF,那麼用upper改為AAABVBGTF,輸入的內容不管是不是大寫,也一律變為大寫,那麼就等於在後台的where條件中忽略大小寫。
比如:某欄位a,欄位內容大寫小都有
select * from table where upper(a) = upper(你的輸入值)
不就等於在查詢的時候忽略大小寫了么。
我的函數都是oracle的,其他的資料庫也有類似的函數,只是不能原版照抄,需要稍微修改一下。