我在eclipse 4.4.0中导入了一个现有的Java项目。我已经将所有必要的类变量添加到项目中,除了一次之外它都有效。
当我添加hibernationcore 4.2.2时。我收到了错误
The method getIdentifierColumnNames() is undefined for the type AbstractEntityPersister
和getIdentifierGenerator()
,getIdentifierPropertyName()
和getTableName()
相同。
然后有人在工作时给了我这本手册http://www.shivasoft.in/blog/java/hibernate/step-by-step-hibernate-tutorial-using-eclipse-wtp/,我设法安装了hibernate。 (步骤:"重新启动后,转到Window | Open Perspective | Other,出现以下对话框,选择Hibernate并单击Ok按钮。")。
但我仍有同样的问题。我是一个绝对的初学者,但我应该让它运行起来。我希望有人可以帮我们解决这个问题,因为在搜索互联网后我还没有找到解决方案。
修改: 也许更多的信息会有所帮助。
public Serializable saveEntity(Object entity) throws Exception{
Serializable retObj = null;
try{
if (session == null){
session = HibernateUtil.getSessionFactory().openSession();
}
logger.debug("Save Entity:" + entity.getClass().getName());
ClassMetadata cm = HibernateUtil.getSessionFactory().getClassMetadata(entity.getClass());
AbstractEntityPersister persister = (AbstractEntityPersister)cm;
IdentifierGenerator idGen = persister.getIdentnedifierGenerator();
if (idGen instanceof org.hibernate.id.Assigned){
String tableName = persister.getTableName();
String idColName = persister.getIdentifierColumnNames()[0];
String idPropName = persister.getIdentifierPropertyName().substring(0,1).toUpperCase() + persister.getIdentifierPropertyName().substring(1);
Method setIdMethod = entity.getClass().getMethod("set" + idPropName, BigInteger.class);
Method getIdMethod = entity.getClass().getMethod("get" + idPropName);
BigInteger id = (BigInteger)getIdMethod.invoke(entity);
if (id == null || id.equals(BigInteger.ZERO)){
id = getNewId(tableName, idColName);
}
if (id == null){
logger.error("Fehler bei Save: " + entity.getClass().getName() + "! Es konnte keine Id erzeugt werden!");
return null;
}
setIdMethod.invoke(entity, id);
}
retObj = session.save(entity);
}
catch (Exception e){
retObj = null;
logger.error(e);
throw e;
}
return retObj;
}
我希望这有助于描述问题。
修改 这些是我使用的印记。
package hl.dbl.util;
import hl.entities.admin.IdSequence;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.LockOptions;
import org.hibernate.ScrollableResults;
import org.hibernate.Transaction;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.id.IdentifierGenerator;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.persister.entity.AbstractEntityPersister;