天天看點

解決使用jpa的時候set實體類屬性自動持久化的問題

項目是用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

繼續閱讀