JPA常見使用小結

2021-10-19 14:41:16 字數 4435 閱讀 4320

實體儲存、更新時要保留操作人以及操作時間。
實體基類

/**

* @author punk

* @date 2021/02/20

*/@entitylisteners

(paasauditingentitylistener.

class

)public

abstract

class

baseentity

implements

serializable

public

void

setcreateby

(string createby)

public string getcreatebyname()

public

void

setcreatebyname

(string createbyname)

public date getcreatetime()

public

void

setcreatetime

(date createtime)

public string getupdateby()

public

void

setupdateby

(string updateby)

public string getupdatebyname()

public

void

setupdatebyname

(string updatebyname)

public date getupdatetime()

public

void

setupdatetime

(date updatetime)

public boolean getdisabled()

public

void

setdisabled

(boolean disabled)

}

審計器介面

/**

* 平台審計處理類

* @author punk

* @date 2020/05/19

*/public

inte***ce

audithandler

審計器實現

/**

* 平台審計實現類

* @author punk

* @date 2020/05/19

*/@component

public

class

paasaudithandler

implements

audithandler

/** * 實體更新前

* @param obj

*/@override

public

void

preupdate

(object obj)

/** * 普通單戶建立填充資訊

* @param be

*/public

void

markforcreate

(baseentity be)

}/**

* 普通單據更新填充資訊

* @param be

*/public

void

markforupdate

(baseentity be)

}

實體***定義

/**

* @author punk

* @date 2020/05/19

*/public

class

paasauditingentitylistener

@preupdate

private

void

preupdate

(object obj)

}

新增監聽註解@enablejpaauditing在啟動類

開發中,在某些場景下,需要對實體字段進行特殊的位運算。jpa本身不支援該功能,這裡我們結合query-dsl實現位運算。
引入依賴

>

>

com.querydslgroupid

>

>

querydsl-jpaartifactid

>

>

4.2.1version

>

dependency

>

>

>

com.querydslgroupid

>

>

querydsl-aptartifactid

>

>

4.2.1version

>

dependency

>

位運算表示式定義

/**

* 位運算表示式定義

* @author punk

* @date 2020/05/20

*/public

abstract

class

bitwiseexpressions

, )"

, arg1, arg2);}

/** * 按位或

* @param arg1

* @param arg2

* @return

*/public

static numbertemplate

bitor

(object arg1, object arg2)

, )"

, arg1, arg2);}

/** * 按位異或

* @param arg1

* @param arg2

* @return

*/public

static numbertemplate

bitxor

(object arg1, object arg2)

, )"

, arg1, arg2);}

}

資料庫綁定位運算

/**

* 向資料庫方言綁定位運算

* @author punk

* @date 2020/05/20

*/public

class

injectsqlfunctiondialectresolver

implements

dialectresolverif(

!functions.

containskey

(sql_function_bitor))if

(!functions.

containskey

(sql_function_bitxor)

)return dialect;

}}

屬性配置

spring:

jpa:

database-platform:

properties:

hibernate:

dialect_resolvers: com.zorpz.up.jpa.extend.injectsqlfunctiondialectresolver

測試

@repository

public

inte***ce

userrepository

extends

jparepository

對定義的sql進行動態拼接,比如加入租戶id,部門id或者部門人員id。

實現statementinteceptor

/**

* jpa 動態sql 攔截

* @author punk

* @date 2021/02/19

*/public

class

jpainteceptor

implements

statementinspector

else

}return s;

}

屬性配置

spring:

jpa:

properties:

hibernate:

session_factory:

statement_inspector: com.zorpz.up.jpa.interceptor.jpainteceptor

Linux常見使用命令小結

sync 將資料由記憶體同步到硬碟中。shutdown關機指令,你可以man shutdown 來看一下幫助文件。例如你可以執行如下命令關機 shutdown h 10 this server will shutdown after 10 mins 這個命令告訴大家,計算機將在10分鐘後關機,並且會...

JPA使用筆記

jpa的多表對映 一對多關係對映 預設一方放棄外來鍵維護,預設延遲載入 onetomany 作用 建立一對多的關係對映 屬性 targetentityclass 指定多的多方的類的位元組碼。cascade 指定要使用的級聯操作 fetch 指定是否採用延遲載入 orphanremoval 是否使用孤...

JPA中 Query的使用

在使用 query中,需要使用以下幾個註解 transactional 註解用於提交事務,若沒有帶上這句,會報事務異常提示 modifying clearautomatically true 自動清除實體裡儲存的資料 query value update t user set user title ...