将应用程序从 Oracle 导入 SQLServer。首次尝试访问数据库时会发生此错误(org.hibernate.exception.SQLGrammarException:无法执行查询)。
这是(省略的)访问代码:-
Session session = serviceLocator.getSessionFactory().openSession();
List<BaseTemplate> baseTemplateList = null;
Query query = null;
try
{
query = session.createQuery("from BaseTemplate");
baseTemplateList = query.list(); <<<<< Exception thrown here
}
etc
豆代码: -
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import com.iontrading.reportserver.database.model.IBaseTemplate;
@Entity
@Table(name = "BASETEMPLATE")
public class BaseTemplate implements IBaseTemplate{
private Integer id;
@Column(name="TEMPLATENAME")
private String templateName;
@Id
@GeneratedValue
@Column(name = "TEMPLATEID")
@Override
/** {@inheritDoc} */
public Integer getId() { return id; }
@Override
/** {@inheritDoc} */
public void setId(Integer id) { this.id = id; }
...snip<> } 表创建 DDL CREATE TABLE "dbo"."BASETEMPLATE" ( TEMPLATEID INT PRIMARY KEY NOT NULL, ... TEMPLATENAME VARCHAR(255) )
可能相关或不相关的要点:-
- 如果数据库是 Oracle,这可以正常工作。
- 表名和bean类名不匹配但使用@Table
- 列名与 bean 字段名不匹配,但使用 @Column
- 主键是生成的值。
- bean 导入是 JPA 不是休眠的。
? 为什么我得到这个异常或者我如何从休眠中获取更多信息的任何想法都会非常有用。谢谢。