gpt4 book ai didi

java - SQLSyntaxErrorException : Table/View does not exist

转载 作者:行者123 更新时间:2023-12-01 06:13:38 25 4
gpt4 key购买 nike

我得到了一个大的堆栈跟踪,其根源是: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/

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