当前位置: 首页 > 面试题库 >

编译查询时出错:抽象模式类型“实体”未知

柏高洁
2023-03-14
问题内容

我正在开发具有数据库连接的游戏,并且使用JPA保留数据。这是我的游戏实体:

@Entity
@Table(name = "game")
public class Game implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "game_id")
private int id;

@Column(name = "name")
private String name;

@Column(name = "nbTurns")
private int nbTurns;

@Column(name = "playedOn")
@Temporal(TemporalType.TIMESTAMP)
private Date playedOn;

@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "game_humans", joinColumns = @JoinColumn(name = "game_id"))
@MapKeyColumn(name = "human_id")
@Column(name = "isDead")
private Map<Human, Boolean> humans;

这是我的人类实体:

@Entity
@Table(name = "human")
public class Human implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(name = "name")
private String name;
@OneToOne
private Building building;

为了获得存储在数据库中的所有人员的列表,我使用了这个DAO,它工作得很好,并且还获得了Building实体:

public class HumanDAO implements DAO<Human> {

// ...
public List<Human> getAllHumans() {
    TypedQuery<Human> query = em.createQuery("SELECT h FROM human h ORDER BY h.name", Human.class);
    return query.getResultList();
}

问题是当我尝试执行相同的操作以使用JPQL查询SELECT g FROM game g获取所有游戏的列表时,出现以下错误:

[EL Info]: 2013-11-25 13:40:27.761--ServerSession(1943119327)--EclipseLink, version: Eclipse Persistence Services - 2.5.0.v20130507-3faac2b
[EL Info]: connection: 2013-11-25 13:40:28.151--ServerSession(1943119327)--file:/Users/amine/Documents/workspace/ZombiesServer/target/classes/_ZombiesServer login successful
[WARNING] 
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
    at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Problem compiling [SELECT g FROM game g]. 
[14, 18] The abstract schema type 'game' is unknown.
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1585)
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)
    at com.amine.zombies.DAO.GameDAO.getAllGames(GameDAO.java:80)
    at com.amine.zombies.application.Application.main(Application.java:21)
    ... 6 more

问题答案:

你应该有

SELECT g FROM Game g//you have game

但是你有game代替Game

@Table注释用于DB。

如果您需要在中更改名称,请JPQL使用@Entity注释: @Entity(name="nameUsedInJPQL") => nameUsedInJPQL is used in your JPQL.

如果您未在中指定任何内容,@Entity则使用区分大小写的Entity类名称。



 类似资料:
  • 包规范成功地编译了消息“SPBomPackage Compiled”,但在编译包体时,我有两个错误,它们是“错误(17,6):PL/SQL:忽略语句”和“错误(17,17):PLS-00302:必须声明组件‘ITEM\u ID’”,包规范,包体,我使用的三个表格,这个软件包将使用,粘贴和格式很好,您可以在这个链接查看:

  • 我在RegexBuddy中创建了两个模式来编译输出,但在Android模式中,compile给了我一个错误。在Java7中,它编译得很好。 原始图案是 [1,[1[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-ZUU[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[0-0-0-9[0-9[0-9[0-9[9[9[9[0,30[0

  • 问题内容: 最近,在一次采访中,有人问我一个非常笼统的问题:“ java中的抽象是什么”。我给出了定义,接着是关于抽象的其他问题,即什么是抽象方法以及抽象方法与具体方法之间的区别等。最后面试官要求我提供一个实时示例,说明我应该使用或将类定义为抽象类。我感到困惑。我给出了一些示例,但他没有被说服。 我用谷歌搜索,但没有找到真正的解决方案。 因此有人可以给我实时示例,即当他/她的项目中将类定义为抽象时

  • 问题内容: 我需要为我的可定制搜索界面(正在编写的Web应用程序)在Java中实现查询对象模式。 有人知道我可以从哪里获得查询对象模式的示例/教程(马丁·福勒的QoP)吗? 提前致谢 附加 如何将查询模式添加到现有DAO模式? 问题答案: “查询对象模式”中的单词“模式”放错了位置(IMHO)。这不是真正的设计模式。“查询对象”只是解释器模式的另一个示例。遗留的Hibernate Criteria

  • 问题内容: 我正在尝试使用Windows 7 Ultimate x64 安装bycrpt 。这是我的安装日志: 我已经安装了Python <v2.7和.NET Framework SDK 2.0。我还下载了一个名为win7sdkx64.exe的程序包,我认为这是Visual Studio的sdk。我喜欢我的所有依赖项,如下所示: 但我仍然遇到这些错误。我接下来可以尝试什么?完全安装Visual S

  • 给出了什么: 我使用Hibernate代码生成生成我的模型类(Hibernate工具 4) 我想要为每个数据库表提供一个抽象基类,以及一个具体的扩展 基类应包含所有数据库字段(获取/设置) 具体类应从基层开始延伸,对于跨站字段应为空 我用阿帕奇·马文处理我的图书馆 我有一个爪哇配置的SpringMVC环境 我听说您可以覆盖Hibernate工具JAR中的Freemarker模板。但是当我使用Mav