java - SQLSyntaxErrorException : Table/View does not exist

标签 java jakarta-ee jpa eclipselink derby

我得到了一个大的堆栈跟踪,其根源是:java.sql.SQLSyntaxErrorException:表/ View “U”不存在。后跟所有需要的异常实体:java.sql.SQLTransactionRollbackException:约束“PSSVERSRDTABASEID”无效:引用的表 U 不存在。

我查看了this question and answer关于类似的问题,但它似乎没有解决我的特定问题。原因是当我在 Eclipse 中打开数据库开发模式时,我可以看到所有其他实体都映射到表,但不是实体 User('U')。

用户实体:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "disc", discriminatorType = DiscriminatorType.STRING)
@Table(name = "U")
@NamedQuery(name = "FIND_WITH_USER_ID", query="SELECT DISTINCT u FROM User u WHERE u.userId = :userId")
public class User implements Serializable{
    private static final long serialVersionUID = 2468889149889625824L;
    @Id @GeneratedValue
    protected long databaseId;

    //getters/setters/etc

}

用户确实有一个子类(显示在表架构中):

@Entity
public class Customer extends User{
    private static final long serialVersionUID = -5239293307816318553L;

    public Customer(){
        super();
    } 

    //getters/setters/etc

}

在我的 persistence.xml 文件中,我指定了要创建的表(如果它们尚不存在):

<properties>
        <property name="javax.persistence.jdbc.driver" value="C:\Program Files\GlassFish\glassfish-4.1\glassfish4\javadb\lib\derby.jar"></property>
        <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/AppDB;create=true"></property>
        <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>

如上所述,其他表显示在数据库架构中(并且对数据库的 ping 操作成功)。问题似乎是围绕用户实体形成的。我觉得可能和保留关键字名称冲突有关,所以我改了几次表的名称(一旦遇到这个异常,Eclipse/Glassfish似乎就有问题,即使我做了更改,比如作为名称,然后重新启动它不会更新的应用程序;我认为超出了问题范围)。

为什么没有为实体用户创建表?我缺少什么?为什么其他表仍在创建?

最佳答案

问题出在您的 SQL 脚本上,您正在传递表别名而不是列名。应该是你。

从 Emp e 中选择不同的 e.emp_id

关于java - SQLSyntaxErrorException : Table/View does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29424076/

相关文章:

java - 使用 JPA/Hibernate 注释映射字符串列表

java - 无法使用 jpa 更新对象

java - 如何将(JavaBean)对象的状态复制到另一个现有对象中?

java - 传递对象作为查询参数并排除 ID 列

java - JpaTransactionManager 中未正确设置事务边界

JavaScript 框架和 Java EE

javascript - 冰面配置

java - jdbc-user-service 添加字段到 SQL

java - 字符串数组中每个元素的平均长度

java - 在 Java EE 应用程序中保存上传文件的首选方式是什么?