我想拥有来自相同数据条目的版本.换句话说,我想用另一个版本号复制该条目.
id - Version 将是主键.
该实体应该如何?如何与其他版本复制?
id Version ColumnA
1 0 Some data
1 1 Some Other data
2 0 Data 2. Entry
2 1 Data
Run Code Online (Sandbox Code Playgroud) Hibernate文档说:
如果您使用身份标识符生成器,Hibernate会透明地禁用JDBC级别的插入批处理.
但是我的所有实体都有这样的配置:
@Id
@GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY)
private Integer id;
Run Code Online (Sandbox Code Playgroud)
当我在上面使用这个身份时
IDENTITY?我想使用Hibernate Native SQL在数据库中插入记录.代码如下所示
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
String sqlInsert = "insert into sampletbl (name) values (?) ";
for(String name : list){
session.createSQLQuery( sqlInsert )
.setParameter(1,name)
.executeUpdate();
}
tx.commit();
session.close();
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常.我认为这不是最好的方法.如果有的话,请给我另一种可能的方法.谢谢
当H2数据库处于Postgres模式时,如何检查它是否支持以下语句(upsert/on conflict)
INSERT INTO event_log_poller_state(aggregate_type, consumer_group_id, value) VALUES (?, ?, ?) on conflict (aggregate_type, consumer_group_id) " +
" do update SET VALUE = ? WHERE event_log_poller_state.aggregate_type = ? AND event_log_poller_state.consumer_group_id = ?
Run Code Online (Sandbox Code Playgroud)
我得到语法错误42000
我写了以下程序来演示
我正在尝试使用本机查询进行批量插入。
@Repository
public interface Repository extends CrudRepository<Entity, Integer> {
@Modifying
@Query(value = "INSERT INTO table_name(value) VALUES (:value)", nativeQuery = true)
void insert(@Param("value") String value);
}
Run Code Online (Sandbox Code Playgroud)
我已将batch_size属性添加到application.properties文件中
spring.jpa.properties.hibernate.jdbc.batch_size = 50
Run Code Online (Sandbox Code Playgroud)
但在日志中,我看到每个插入都是单独处理的。是否可以将批处理应用于本机查询?
java ×4
hibernate ×3
jpa ×3
bulk ×1
h2 ×1
java-ee ×1
mysql ×1
postgresql ×1
spring ×1
spring-boot ×1
sql ×1
transactions ×1