Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在现有数据库中使用playframework 1.2.5_Java_Jpa_Playframework_Playframework 1.x - Fatal编程技术网

Java 在现有数据库中使用playframework 1.2.5

Java 在现有数据库中使用playframework 1.2.5,java,jpa,playframework,playframework-1.x,Java,Jpa,Playframework,Playframework 1.x,我正在尝试从Oracle 10g DB获取一些数据。因此,我在application.conf文件中添加了与数据库相关的详细信息,当我启动服务器时,在命令提示符中显示连接成功 我创建了一个实体类,数据库中有一个类似于类名的表 Query query = JPA.em().createQuery("select * from Emp"); List<Emp> empList = query.getResultList(); for(Emp employees : emp

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

我创建了一个实体类,数据库中有一个类似于类名的表

Query query = JPA.em().createQuery("select * from Emp");
    List<Emp> empList = query.getResultList();
    for(Emp employees : empList)
        System.out.println(employees.emp_name);
然后我得到一个例外:

JPAQueryException发生:从模型执行查询时出错。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.all().fetch();
List empList=Emp.all().fetch();
我会做一个:
List empList=Emp.findAll()

但我不认为这是真正的问题。问题在于到db表的映射。您的错误消息:

`JPAQueryException occured : Error while executing query from models.Emp: ORA-00904:        "EMP0_"."ID": invalid identifier`
表示实际查询尝试获取列“ID”,而不是所需的实际列(根据注释,
@column(name=“Emp\u ID”)

注释无法按预期工作。可能大小写字符有问题

编辑后的答复:


您的模型类EMP继承自生成唯一标识符id的playframework父模型类。这可能会导致您的问题。

我将模型类更改为
@id public Integer EMP\u id但仍然是相同的问题:(我不确定为什么
Emp\u Id
会变成
“EMP0\u”.“Id”
如错误消息所示。此外,关于区分大小写的问题,SQL查询表名和列名不区分大小写,对吗?嗯,playframework中的所有模型类都继承自具有ID字段的类模型。由于该类处理主键,因此您的模型对象中不必有emp_ID。顺便说一句。您是在使用现有的数据库表,还是让play/hibernate为您生成它们?我有一个名为“Emp”的现有表在Oracle数据库中。仅从现有表中,我正在尝试获取值。我不希望play/hibernate生成任何表。在运行上述代码时,我看到对数据库启动了一些alter查询…不知道原因:(请帮助您查看了
play.db.jpa.GenericModel
,与本线程中讨论的内容结合起来可能会帮助您针对现有的db工作。感谢链接,但它没有起作用。我添加了这行:
jpa.ddl=none
evolutionplugin=disabled
,并注释掉了这行
%test.jpa。).ddl=create
但它仍然不起作用。除了这些条目之外,我在文件中还有db配置详细信息。但是我没有
jpa.dial
jpa.debugSQL
集,这些都被注释掉了。请对此提供任何帮助?我正在尝试从现有表(由其他应用程序维护)获取详细信息,我遇到了上述异常。请告诉我如何解决此问题:(我看到您通过使用GenericModel找到了数据库映射问题的答案。您更改了问题-您最初的问题是您的查询的问题-我已回答了。第二个问题与不理解正在使用的模型类带有硬编码的id字段有关。很高兴您仍然可以使用它。
`JPAQueryException occured : Error while executing query from models.Emp: ORA-00904:        "EMP0_"."ID": invalid identifier`