【Hibernate】NativeQuery.setProperties でパラメータのセットにPOJOを使う
hibernate のSQL実行時のパラメータセットにPOJOが使えたのが便利そうだからメモっておく
org.hibernate.query.NativeQuery.setProperties()
を使うことでパラメータのセットにPOJOが使える
// Dao.java @Override public void insert(People people) { Session session = sessionFactory.getCurrentSession(); NativeQuery query = session.createNativeQuery("insert into people (first_name, last_name, division_id) values (:firstName, :lastName, :divisionId)"); query.setProperties(people); query.executeUpdate(); }
// People.java @Data public class People { private String firstName; private String lastName; private Integer divisionId; }
//Service.java @Override @Transactional public void insertUser() { People people = new People(); people.setFirstName("taro"); people.setLastName("yamada"); peopleDao.insert(people); }
:フィールド名
としたら、自動でマッピングしてくれた
NULLが許可されているカラムに対応するフィールドがnull
の場合、null
をINSERTしてくれた
+-----------+------------+-----------+-------------+ | person_id | first_name | last_name | division_id | +-----------+------------+-----------+-------------+ | 1 | first | last | <null> | +-----------+------------+-----------+-------------+
参考文献
- [Query (Hibernate API Documentation) https://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Query.html#setProperties(java.lang.Object)]
- [Java Code Examples org.hibernate.Query.setProperties https://www.programcreek.com/java-api-examples/?class=org.hibernate.Query&method=setProperties]