我有一个表,该表使用4列作为主键,并具有其他4列以及一些数字数据。此数据经常更新。如果数据库中已经存在INSERT
中指定的主键行,那么这4个数字行不需要更新,而不是替换旧数据,而是通过添加旧值和{{ 1}}查询。问题是我不想像在INSERT
批注中那样使用任何在String中声明的PreparedStataments
或SQL语句,但是我想在代码中动态地执行它,因为将会有更多的表这样,列数可能会频繁更改,因此我不想一直更新@SQLInsert
。所以我想知道是否有一些Hibernate方法,或者我可以创建一个自定义的Hibernate配置类来更改默认插入而无需编写Strings
语句。我还需要对数据库的查询尽可能少,理想情况下只有一个。
我已经尝试过:
String
与@SQLInsert
一起使用INSERT ON DUPLICATE KEY UPDATE
对象中并保存新对象这两种方法都可行,但是第一种方法需要一个带有语句的Entity
,第二种方法需要对数据库进行两次查询,这会影响性能。
所以我只想用代码做同样的事情。我在下面提供String
类供参考。我正在使用MySQL数据库。
Entity