Java @JPA中的列注释
我正在尝试持久化一个与数据库中不存在的表映射的实体。 实体类是Java @JPA中的列注释,java,jpa,orm,Java,Jpa,Orm,我正在尝试持久化一个与数据库中不存在的表映射的实体。 实体类是 @Entity @Table(name = "NEWTABLE") public class Account { @Id @Column(unique=true) private int accountNo; private String customerName; // Respective Getters and Setters 数据库中不存在NEW
@Entity
@Table(name = "NEWTABLE")
public class Account {
@Id
@Column(unique=true)
private int accountNo;
private String customerName;
// Respective Getters and Setters
数据库中不存在NEWTABLE
。当我试图持久化此实体时,会出现以下错误:
Internal Exception: java.sql.SQLException: ORA-00942: table or view does not exist
但是如果我删除
@列
注释中的unique=true
,实体将被持久化。如果你能告诉我这背后的原因,那将是一个很大的帮助。提前感谢。您是否先尝试不使用unique
注释,然后尝试使用unique=true条件保留帐户
对象
如果是,那么原因可能是真的,因为它无法更新就地架构以将约束修改为Unique=true
如果您正在使用hibernate,请尝试:
<property name="hibernate.hbm2ddl.auto">update</property>
更新
如果一个模式不存在,它将创建一个模式,并尝试修改现有表以匹配您定义的映射。如果表不存在,则如何将帐户对象持久化到数据库中您已经说明了原因:
数据库中不存在“NEWTABLE”。
但是如果我们删除unique=true,即使新表不在数据库中,它也会保持不变。(在persistence.xml中,如果我们将ddl生成指定为create tables,那么它将创建数据库中不存在的表)@Dheepan在哪里持久化,因为表不存在?@Matteo:它正在持久化表名为“NEWTABLE”的数据。我第一次尝试使用unique约束。只有在没有唯一约束的情况下才能工作。甚至它也接受其他属性的唯一约束。仅当我对主键属性使用唯一约束时,它会给出错误。默认情况下,主键具有唯一约束。您不需要显式地定义它们。也许,这就是原因。此外,您还可以尝试使用hibernate在持久化实体时生成的“sql”进行调试