- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Hibernate 和 Spring 开发方面绝对是新手,我有以下问题
我有一个名为 KM_ProjectInfoStatus 的实体类,它映射一个名为 KM_PROJECT_INFO_STATUS 的数据库表,所以我有这个类:
package egp.prc.km.model;
import javax.persistence.*;
import java.io.Serializable;
@NamedQueries({
@NamedQuery(name = "kmProjectInfoStatusList", query = "select status from KM_PROJECT_INFO_STATUS status order by status.idProjectInfoStatus") ,
@NamedQuery(name = "kmProjectInfoStatusById", query = "SELECT status FROM KM_PROJECT_INFO_STATUS status where lower(status.idProjectInfoStatus) = :statusId")
})
@Entity
@Table(name = "KM_PROJECT_INFO_STATUS")
public class KM_ProjectInfoStatus implements Serializable {
@Id
@GeneratedValue
private Long idProjectInfoStatus;
@Column(name = "foldertech")
private Long foldertech;
@Column(name = "folderproject")
private Long folderproject;
public Long getIdProjectInfoStatus() {
return idProjectInfoStatus;
}
public void setIdProjectInfoStatus(Long idProjectInfoStatus) {
this.idProjectInfoStatus = idProjectInfoStatus;
}
public Long getFoldertech() {
return foldertech;
}
public void setFoldertech(Long foldertech) {
this.foldertech = foldertech;
}
public Long getFolderproject() {
return folderproject;
}
public void setFolderproject(Long folderproject) {
this.folderproject = folderproject;
}
}
正如您在前面的代码片段中看到的,在该类上定义了 2 个命名查询,这些:
@NamedQueries({
@NamedQuery(name = "kmProjectInfoStatusList", query = "select status from KM_PROJECT_INFO_STATUS status order by status.idProjectInfoStatus") ,
@NamedQuery(name = "kmProjectInfoStatusById", query = "SELECT status FROM KM_PROJECT_INFO_STATUS status where lower(status.idProjectInfoStatus) = :statusId")
})
1) 第一个名为 kmProjectInfoStatusList,并从我的 KM_PROJECT_INFO_STATUS 表中选择行列表。
2) 第二个名为 kmProjectInfoStatusById,并使用 where 条件中的 ID 从我的 KM_PROJECT_INFO_STATUS 表中选择一行。
然后我必须实现一个实现 DAO 的 Spring 服务。
因此,我首先创建一个名为 KMProjectInfoStatusService 的接口(interface),在其中声明我的 DAO 的方法:
public interface KMProjectInfoStatusService {
@Transactional
public List<KM_ProjectInfoStatus> getProjectInfoStatusList();
@Transactional
public KM_ProjectInfoStatus getProjectInfoStatus(Long idProjectInfoStatus);
}
我在 Hibernate 和 Spring 开发方面绝对是新手,我有以下问题
我有一个名为 KM_ProjectInfoStatus 的实体类,它映射一个名为 KM_PROJECT_INFO_STATUS 的数据库表,所以我有这个类:
package egp.prc.km.model;
import javax.persistence.*;
import java.io.Serializable;
@NamedQueries({
@NamedQuery(name = "kmProjectInfoStatusList", query = "select status from KM_PROJECT_INFO_STATUS status order by status.name") ,
@NamedQuery(name = "kmProjectInfoStatusById", query = "SELECT status FROM KM_PROJECT_INFO_STATUS status where lower(status.idProjectInfoStatus) = :statusId")
})
@Entity
@Table(name = "KM_PROJECT_INFO_STATUS")
public class KM_ProjectInfoStatus implements Serializable {
@Id
@GeneratedValue
private Long idProjectInfoStatus;
@Column(name = "foldertech")
private Long foldertech;
@Column(name = "folderproject")
private Long folderproject;
public Long getIdProjectInfoStatus() {
return idProjectInfoStatus;
}
public void setIdProjectInfoStatus(Long idProjectInfoStatus) {
this.idProjectInfoStatus = idProjectInfoStatus;
}
public Long getFoldertech() {
return foldertech;
}
public void setFoldertech(Long foldertech) {
this.foldertech = foldertech;
}
public Long getFolderproject() {
return folderproject;
}
public void setFolderproject(Long folderproject) {
this.folderproject = folderproject;
}
}
正如您在前面的代码片段中看到的,该类还包含 2 个命名查询,这些是:
@NamedQueries({
@NamedQuery(name = "kmProjectInfoStatusList", query = "select status from KM_PROJECT_INFO_STATUS status order by status.name") ,
@NamedQuery(name = "kmProjectInfoStatusById", query = "SELECT status FROM KM_PROJECT_INFO_STATUS status where lower(status.idProjectInfoStatus) = :statusId")
})
然后我必须实现一个实现 DAO 的 Spring 服务。
因此,我首先创建一个名为 KMProjectInfoStatusService 的接口(interface),在其中声明 DAO 的方法:
公共(public)接口(interface) KMProjectInfoStatusService {
@Transactional
public List<KM_ProjectInfoStatus> getProjectInfoStatusList();
@Transactional
public KM_ProjectInfoStatus getProjectInfoStatus(Long idProjectInfoStatus);
}
最后,我创建了 KMProjectInfoStatusServiceImp 类来实现之前的接口(interface)并代表我的具体 DAO:
@Repository("kmProjectInfoStatusService")
public class KMProjectInfoStatusServiceImpl extends AbstractService implements KMProjectInfoStatusService {
public List<KM_ProjectInfoStatus> getProjectInfoStatusList() {
//return new KM_ProjectInfoStatus[0]; //To change body of implemented methods use File | Settings | File Templates.
return getHibernateTemplate().execute(
new HibernateCallback<List<KM_ProjectInfoStatus>>() {
public List<KM_ProjectInfoStatus> doInHibernate(Session session) throws HibernateException, SQLException {
return getStatusList(session);
}
}
);
}
public KM_ProjectInfoStatus getProjectInfoStatus(Long idProjectInfoStatus) {
//return null; //To change body of implemented methods use File | Settings | File Templates.
final Long id = idProjectInfoStatus;
return getHibernateTemplate().execute(
new HibernateCallback<KM_ProjectInfoStatus>() {
public KM_ProjectInfoStatus doInHibernate(Session session) throws HibernateException, SQLException {
return getStatus(id, session);
}
}
);
}
private List<KM_ProjectInfoStatus> getStatusList(Session session) {
//create query:
Query query = session.getNamedQuery("kmProjectInfoStatusList");
List<KM_ProjectInfoStatus> statusList = query.list();
return statusList;
}
private KM_ProjectInfoStatus getStatus(Long idProjectInfoStatus, Session session) {
//create query:
Query query = session.getNamedQuery("kmProjectInfoStatusById");
query.setParameter("statusId", idProjectInfoStatus);
KM_ProjectInfoStatus status = (KM_ProjectInfoStatus) query.uniqueResult();
return status;
}
}
正如您在此类中看到的,我实现了接口(interface)中声明的 2 个方法 getProjectInfoStatusList() 和 getProjectInfoStatus()。这两个方法分别使用 getStatusList() 执行第一个命名查询以获取列表,并使用 getStatus() 执行第二个查询以从其 id 获取对象。
问题是,当我尝试执行我的项目时,会抛出 HibernateException ,并且我在堆栈跟踪中收到以下错误消息:
2014-12-29 16:25:44,210 [[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] ERROR impl.SessionFactoryImpl.<init>(363) - Error in named query: kmProjectInfoStatusById
org.hibernate.hql.ast.QuerySyntaxException: KM_PROJECT_INFO_STATUS is not mapped [SELECT status FROM KM_PROJECT_INFO_STATUS status where lower(status.idProjectInfoStatus) = :statusId]
at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87)
at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70)
at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:255)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
................................................................................
................................................................................
................................................................................
................................................................................
<29-dic-2014 16.25.44 CET> <Error> <Deployer> <BEA-149202> <Encountered an exception while attempting to commit the 1 task for the application 'KM_Web_war_exploded'.>
<29-dic-2014 16.25.44 CET> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating deploy task for application 'KM_Web_war_exploded'.>
<29-dic-2014 16.25.44 CET> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
weblogic.application.ModuleException: :org.hibernate.HibernateException:Errors in named queries: kmProjectInfoStatusById, kmProjectInfoStatusList
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:365)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779)
Truncated. see log file for complete stacktrace
为什么?可能是什么问题呢?我缺少什么?我该如何解决这个问题?
最佳答案
您在 Hibernate 世界中,因此您需要使用 Hibernate 实体名称,而不再是 SQL 表名称。默认情况下,实体名称是类的简单名称。
所以你应该这样写:
select status from KM_ProjectInfoStatus status order by status.name
Google 有关 HQL/JPQL 的详细信息。
关于java - 为什么我在这个 Spring 项目中获得与命名查询相关的 HibernateException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27691699/
第一段代码工作正常,并给出了我需要的结果。我现在想做的是让它在 'as num' 上返回 3 个数字值对于“as num”上的 3 个不同值,对于同一列上的 3 个不同位置 SELEC
我想分析一些数据以编写定价算法。以下日期可用: 我需要三个变量/维度的函数/相关因子,它显示三个维度(pers_capacity、卧室数量、浴室数量)增长时中位数(价格)的变化。例如Y(#pers_c
正如标题所说 - 我的 Sprite Kit 游戏时不时地在后台崩溃,总是出现此错误 - Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Sub
假设我尝试保存以下数据,并且Songs模型的name属性上设置了Phalcon \ Mvc \ Model \ Validator \ PresenceOf验证器 // Get an existing
我有一个 if 控件,如下所示; if (Directory.Exists(System.IO.Path.Combine(systemPath, "Reports", companyName))
有人可以告诉我我们使用 ReadLine() 从文件 (.txt) 中读取特定行吗?现在我想读取文件的全部内容(不仅仅是第一行)。为此我需要使用什么方法。我用谷歌搜索了很多,但找不到解决方案。 我的代
我相信在大学时我用从 C 派生的语言为 FPGA 编写了一个程序。我了解 VHDL 和 verilog 等语言。但是,我不明白的是程序员在使用哪个方面有多少选择?它依赖于FPGA吗?我将使用 Xili
我有一个 if 控件,如下所示; if (Directory.Exists(System.IO.Path.Combine(systemPath, "Reports", companyName))
如何在运行时更改 Dashcode (Javascript) 中图像对象的源? 我试过: var image = document.getElementById("image").object;ima
我有几个相互关联的类,它们将被多种不同的算法使用 例子: struct B; struct A { B* parent; }; struct B { std::vector child
我正在开发一个网站,用户在客户收到的表中输入金额,如果任何客户没有提供分期付款(金额),则用户不会在表中输入任何金额,并且用户希望获取违约者的信息客户以10天为基础。所以我的问题是应该定义什么表和属性
我试图从上一个条目中选择一个值,并每次将该数字加一。我让它工作到选择当前条目值(默认 1000)并递增 1 并重新插入该值(因此每次最终都是 1001)。我需要它来选择该字段的最后一个条目,这样它将变
我不擅长“制作”查询。假设这是我的数据库: artist pics ------------------- -
最近,我要为我的网站做一个即时通知系统。我听说 COMET 在这种情况下必不可少。 我已经搜索 PHP 和 Comet 一段时间了,但是,我发现的指南和文章似乎只是循环中的 ajax 请求。例如,有一
我正在开发一款 iOS 游戏,我希望 clown 在场景外生成,然后向下移动。我的想法是全部创建它们,并将它们以 360 像素的距离放置在不可见的场景中。 像这样: SKSpriteNode *clo
我有以下子订单表。 mysql> select * from suborder; +-------------+------------------+ | order_state | bookin
这可能是一个有点初学者的问题,但考虑到在 Java 中调试编码是相当相关的:什么时候编码与 String 对象相关? 假设我有一个要保存到文件中的字符串对象。 String 对象本身是否使用某种我应该
首先我想说我是 CPP 的新手(我从 cpp11 开始):)考虑以下实体:学生(名字+姓氏)和组(描述+更多学生)。我在 C++ 中创建了以下 2 个类: class Student { privat
我正在尝试在单击该复选框时同步更新我的数据库。我决定使用 aJax,但它似乎无法识别 ajax。 代码:将成为 Switch_Active(this.id) 函数的元素 ... Deactivat
我正在创建一个菜单。菜单如下。 $('.category').mouseover(function() { $(this).removeClass('category').addClass('cate
我是一名优秀的程序员,十分优秀!