0

我正在使用休眠 3。

我的问题是,如何使用 Hibernate 或 HQL 使用单个插入查询来优化多个插入查询或触发多个查询。

我已经浏览了以下链接:

如何制作将生成 SQL 以在一条语句中插入多个值的 HQL?

HQL 批量插入

而且我发现我的问题略有不同。我的查询是:

INSERT INTO scoring.table_a (a_id, a_name) VALUES (1, 'a');
INSERT INTO scoring.table_a (a_id, a_name) VALUES (2, 'b');
....
...
..
INSERT INTO scoring.table_a (a_id, a_name) VALUES (1000, 'd');

多列而不是单列的值集不同。此外,输入的值是计算出来的,而不是直接从某个表中获取的。同样,我INSERT INTO... SELECT可能无法使用。因为据我所知,INSERT INTO... SELECT从另一个表中获取数据。

我还阅读了有关批处理的信息,但这也会触发多个插入查询,我不想使用这些查询。

希望任何人都可以帮助我。

4

1 回答 1

0

我可以在这里建议您使用休眠实体,例如

@Entity(name = table_a)
public class TableAEntity{

@id
@Column(name="a_id")
String aId;

@Column(name = "a_name")
String aName;

public TableAEntity(String aId, String aName){
  this.aId=aid;
  this.aName =aName;
}

// Getter setter for column aId, aName
}

然后你可以像更新这样的东西,例子取自here

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
    TableAEntity entity= new TableAEntity(.....);
    session.save(entity);
}
tx.commit();
session.close();

在同一链接中提供了更多执行相同操作的方法。

于 2013-10-08T06:47:29.030 回答