gpt4 book ai didi

java - 将 playframework 1.2.5 与现有数据库结合使用

转载 作者:行者123 更新时间:2023-11-30 04:31:37 25 4
gpt4 key购买 nike

我正在尝试从 Oracle 10g DB 获取一些数据。因此,我在 application.conf 文件中添加了与数据库相关的详细信息,当我启动服务器时,然后在命令提示符中显示连接成功。

我创建了一个Entity类,数据库中存在一个与类名类似的表。

Query query = JPA.em().createQuery("select * from Emp");
List<Emp> empList = query.getResultList();
for(Emp employees : empList)
System.out.println(employees.emp_name);

当我尝试运行代码时出现以下异常:

发生 IllegalArgumentException:org.hibernate.hql.ast.QuerySyntaxException:意外标记:* 靠近第 1 行第 8 列 [select * from models.Emp]

编辑:

如果我将代码更改为:

List<Emp> empList = Emp.all().fetch();
for(Emp employees : empList)
System.out.println(employees.emp_name);

然后我遇到了异常:

发生 JPAQueryException:从 models.Emp 执行查询时出错:ORA-00904:“EMP0_”。“ID”:无效标识符

这是我的模型类,名为 Emp.java:

package models;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

import play.data.validation.Required;
import play.db.jpa.Model;

@Entity
public class Emp extends Model {

@Id
@Column(name="Emp_Id")
public Integer id;
public String emp_name;
public Integer dept_id;
public Integer age;
public String sex;

}

这是 Oracle 数据库中存在的 emp 表,其中包含一些数据:

EMP_ID  NUMBER. EMP_NAME VARCHAR2(20), DEPT_ID NUMBER, AGE NUMBER, SEX VARCHAR2(6)

由于我不知道此问题的原因,因此我重新表述了该线程的标题。

请告诉我如何解决此问题。

最佳答案

我会做: List<Emp> empList = Emp.findAll();

但我认为这不是真正的问题。问题出在数据库表的映射中。您的错误消息:

`JPAQueryException occured : Error while executing query from models.Emp: ORA-00904:        "EMP0_"."ID": invalid identifier`

意味着实际查询尝试获取列“ID”而不是您想要的实际列(根据您的注释,@Column(name="Emp_Id"))。

注释未按您的预期工作。也许是大写/小写字符有问题?

编辑后的回复:

您的模型类 EMP 继承自 playframework 父模型类,该类生成唯一标识符 id。这可能是导致您出现问题的原因。

关于java - 将 playframework 1.2.5 与现有数据库结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14525359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com