項目是用springboot + jpa 架構,查詢實體某個屬性現需要臨時改變它的字段值,再進行其他業務處理,但是不需要存進實體字段中,以免污染其他人的使用。但是發現一旦調用該實體的set方法,jpa會字段對其進行了持久化操作。解決方法如下:
@PersistenceContext
private EntityManager entityManager;
.
.
.
public ....(){
// 擷取目前庫中的字段值
String anyKeywords = specialProject.getAnyKeywords();
// 獲得hibernate的session管理對象
HibernateEntityManager hEntityManager = (HibernateEntityManager)entityManager;
Session session = hEntityManager.getSession();
// 将該對象從持久态變為遊離态
session.evict(specialProject);
// 臨時改變字段值
String appendTrsl = new StringBuilder().append(anyKeywords).append("," + xType).toString();
// 這時候執行set方法就不會持久化新的内容了
specialProject.setAnyKeywords(appendTrsl);
}
詳解看:https://yq.aliyun.com/ziliao/423000