我正在使用hibernate 5.2。我不使用 hbm2ddl 。目前正在尝试在对结构进行更改时自动更新数据库。
想法是从旧数据库获取所有数据并将其粘贴到新数据库中。但我遇到的问题是我无法从更改的表中检索数据。我收到错误:
org.hibernate.exception.GenericJDBCException: could not prepare statement
旧表是:
Fruits{
int apples;
int oranges;
}
新表:
Fruits{
int apples;
int oranges;
int pears;
}
新列可防止检索数据。
我试图使用TypedQuery
:
TypedQuery<Fruits> query = session.createQuery("FROM Fruits", Fruits.class);
ArrayList<Fruits> fruits = (ArrayList<Fruits>) query.getResultList();
是否可以仅使用旧参数检索对象,或者只是跳过不匹配的参数(并将它们放在地图中)?
答案 0 :(得分:0)
我不知道,但您可以选择只选择数据库中的现有列,并将它们转换为具有空梨字段的对象。
SELECT apples, oranges FROM fruits
那会给你:
List<Object[]> fromDB = (ArrayList<Object[]>) query.getResultList();
List<Fruits> fruits = new ArrayList();
for (Object[] o : fromDB) {
Fruits f = new Fruits(fromDB[0], fromDB[1], 0);
fruits.add(f);
}
(可能需要进行某种类型转换)