Hibernate 自定義主鍵
我的想法是這樣的:
有一個抽象類:GenericEntity,有兩個抽象方法:getPrimaryKey(),setPrimaryKey(PrimaryKey primaryKey)。其中PrimaryKey是我自定義的主鍵類。專案中所有需要持久化的類都必須繼承GenericEntity。
那如果我採用hibernate的方式,應該怎麼做?
另外,我還想做一個KeyGenerator,可以根據不同的實體自動生成主鍵,但是這個主鍵生成器的問題就比較多,不知道大家有什麼建議不。
以下是我的程式碼:
/**
* GenericEntity
*/
public abstract class GenericEntity implements Serializable {
public abstract PrimaryKey getPrimaryKey();
public abstract void setPrimaryKey(PrimaryKey primaryKey);
}
/**
* PrimaryKey
*/
public class PrimaryKey implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Class<? extends Serializable> type;
private String value;
/** Default Constructor */
public PrimaryKey() {}
/** Full Constructor */
public PrimaryKey(Class<? extends Serializable> type, String value) {
this.type = type;
this.value = value;
}
/**
* @return the type
*/
public Class<? extends Serializable> getType() {
return type;
}
/**
* @param type
* the type to set
*/
public void setType(Class<? extends Serializable> type) {
this.type = type;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
/**
* @param value
* the value to set
*/
public void setValue(String value) {
this.value = value;
}
/**
* @param obj
* @return
* @see java.lang.Objectequals(java.lang.Object)
*/
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj instanceof PrimaryKey) { // null instanceof PrimaryKey is false
PrimaryKey pk = (PrimaryKey) obj;
Class<? extends Serializable> pkType = pk.type;
String pkValue = pk.value;
if (MathHelper.compareTo(this.type, pkType) && (MathHelper.compareTo(this.value, pkValue))) return true;
}
return false;
}
/**
* @return
* @see java.lang.ObjecttoString()
*/
public String toString() {
StringBuffer message = new StringBuffer();
message.append("[Type]:");
message.append(this.type);
message.append("\n");
message.append("[Value]:");
message.append(this.value);
return message.toString();
}
}
/**
* PrimaryKeyGenerator
*/
public interface PrimaryKeyGenerator {
public PrimaryKey generate();
}
有一個抽象類:GenericEntity,有兩個抽象方法:getPrimaryKey(),setPrimaryKey(PrimaryKey primaryKey)。其中PrimaryKey是我自定義的主鍵類。專案中所有需要持久化的類都必須繼承GenericEntity。
那如果我採用hibernate的方式,應該怎麼做?
另外,我還想做一個KeyGenerator,可以根據不同的實體自動生成主鍵,但是這個主鍵生成器的問題就比較多,不知道大家有什麼建議不。
以下是我的程式碼:
/**
* GenericEntity
*/
public abstract class GenericEntity implements Serializable {
public abstract PrimaryKey getPrimaryKey();
public abstract void setPrimaryKey(PrimaryKey primaryKey);
}
/**
* PrimaryKey
*/
public class PrimaryKey implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Class<? extends Serializable> type;
private String value;
/** Default Constructor */
public PrimaryKey() {}
/** Full Constructor */
public PrimaryKey(Class<? extends Serializable> type, String value) {
this.type = type;
this.value = value;
}
/**
* @return the type
*/
public Class<? extends Serializable> getType() {
return type;
}
/**
* @param type
* the type to set
*/
public void setType(Class<? extends Serializable> type) {
this.type = type;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
/**
* @param value
* the value to set
*/
public void setValue(String value) {
this.value = value;
}
/**
* @param obj
* @return
* @see java.lang.Objectequals(java.lang.Object)
*/
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj instanceof PrimaryKey) { // null instanceof PrimaryKey is false
PrimaryKey pk = (PrimaryKey) obj;
Class<? extends Serializable> pkType = pk.type;
String pkValue = pk.value;
if (MathHelper.compareTo(this.type, pkType) && (MathHelper.compareTo(this.value, pkValue))) return true;
}
return false;
}
/**
* @return
* @see java.lang.ObjecttoString()
*/
public String toString() {
StringBuffer message = new StringBuffer();
message.append("[Type]:");
message.append(this.type);
message.append("\n");
message.append("[Value]:");
message.append(this.value);
return message.toString();
}
}
/**
* PrimaryKeyGenerator
*/
public interface PrimaryKeyGenerator {
public PrimaryKey generate();
}
[該貼被snow0613於2009-02-25 10:14修改過]
[該貼被admin於2009-02-25 18:44修改過]
相關文章
- Hibernate自定義產生主鍵方式
- HIBERNATE的自定義型別主鍵的對映??型別
- Hibernate主鍵策略
- hibernate主鍵生成策略
- Hibernate 主鍵的生成策略
- android自定義鍵盤 自定義身份證鍵盤Android
- SQLserver自定義樣式主鍵-函式實現篇SQLServer函式
- Hibernate框架的主鍵生成策略框架
- vue自定義鍵盤Vue
- 自定義鍵盤(一)
- 自定義鍵盤(二)
- word自定義快捷鍵
- android自定義view(自定義數字鍵盤)AndroidView
- Java Hibernate 主鍵生成10大策略Java
- 操作hibernate多主鍵的問題?
- android 自定義鍵盤Android
- 自定義Android鍵盤Android
- 自定義右鍵選單
- 操作hibernate多主鍵的問題?(2)
- hibernate複合主鍵查詢問題
- 自定義部落格園主題
- ModernUI教程:建立自定義主題UI
- win10如何自定義主題_win10怎麼設定自定義主題Win10
- CAD自定義快捷鍵命令
- 自定義身份證鍵盤(Swift)Swift
- vscode 自定義快捷鍵VSCode
- Swift自定義表情鍵盤+錄音Swift
- Android自定義數字鍵盤Android
- 自定義 Windows 右鍵選單項Windows
- Sketch怎麼自定義快捷鍵
- iOS 自定義鍵盤字母按鈕iOS
- Android自定義收銀鍵盤Android
- 為WinEdt自定義XeLatex快捷鍵
- eclipse 自定義eclipse快捷鍵Eclipse
- 請教Hibernate的多主鍵操作如何實現?
- WordPress主題製作進階#10自定義主頁
- Win10系統怎麼自定義更改主題 win10自定義修改主題的方法Win10
- Hexo 主題開發之自定義模板Hexo