之早有寫一個簡易的Java Web,利用Hibernate框架來處理資料庫的部分,當時有一個table欄位
為Enum type,時至今日因為匯錯database版本而導致網頁運作時出現Exception,因此還是來
記錄一下相關的操作及設定,以避免以後又忘記了XD
當時,我寫了一個register的頁面,裡面將性別的欄位設為Enum type,相對地資料庫的table
我也是設成Enum。
相關程式碼與設定檔如下:
User.hbm.xml (代表user table的hibernate欄位設定,此處只列出性別設定enum type)
裡面會對映我的enum type class path
type = 12,相當於寫入table為 java.sql.Types.VARCHAR
另外定義的Enum type class如下:
前端的HTML select option如下:
注意!在這邊是以radio做選項,裡面對應的value分別為Male、Female
最後,user table的bean檔如下定義(只列出性別的部分):
若您要向user table取資料時,請記得要將String type轉成Sex type
大致應該這樣就可以運作囉!
為Enum type,時至今日因為匯錯database版本而導致網頁運作時出現Exception,因此還是來
記錄一下相關的操作及設定,以避免以後又忘記了XD
當時,我寫了一個register的頁面,裡面將性別的欄位設為Enum type,相對地資料庫的table
我也是設成Enum。
相關程式碼與設定檔如下:
User.hbm.xml (代表user table的hibernate欄位設定,此處只列出性別設定enum type)
<property name="sex">
<type name="org.hibernate.type.EnumType">
<param name="enumClass">com.domain.Sex</param>
<param name="type">12</param>
</type>
</property>
裡面會對映我的enum type class path
type = 12,相當於寫入table為 java.sql.Types.VARCHAR
另外定義的Enum type class如下:
package com.domain;
public enum Sex {
Male, Female
}
table的欄位設定如下:前端的HTML select option如下:
注意!在這邊是以radio做選項,裡面對應的value分別為Male、Female
最後,user table的bean檔如下定義(只列出性別的部分):
public class User {
private Sex sex;
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
}
若您要向user table取資料時,請記得要將String type轉成Sex type
ResultSet rs = myDB.getResultSet(sql);
if(rs.next()){
user = new User();
....
user.setSex(Sex.valueOf(rs.getString("sex")));
....
}
大致應該這樣就可以運作囉!
留言
張貼留言