Postgres 插入带有序列的记录生成错误 - org.postgresql.util.PSQLException:错误:关系"dual"不存在



我是Postgres数据库的新手。

我有一个java实体类,其中以下为ID:

@Entity
@Table(name = "THE_RULES")
public class TheRulesEntity {
/** The id. */
    @Column(name = "TEST_NO", precision = 8)
    @SequenceGenerator(name = "test_no_seq", sequenceName = "TEST_NO_SEQ")
    @GeneratedValue(generator = "test_no_seq", strategy = GenerationType.AUTO)
    @Id
    private Long id;
/** The test val. */
    @Column(name = "TEST_VAL", nullable = false, length = 3)
    private String testVal;

代码:

rulesRepository.saveAndFlush(theRulesEntity)

表:

CREATE TABLE THE_RULES
(
    TEST_NO         INT NOT NULL,
    TEST_VAL        VARCHAR(3) NOT NULL
)
CREATE SEQUENCE "TEST_NO_SEQ" START WITH 1000 INCREMENT BY 1;

当我尝试从我的应用程序中将新记录插入Postgres数据库时(ID值在调试模式下以Java代码为null),然后我会收到以下错误:

Caused by: org.postgresql.util.PSQLException: ERROR: relation "dual" does not exist

但是,如果我将记录手动插入数据库表,然后从我的应用程序中更新记录,则该记录已成功更新(可能是因为应用程序使用相同的ID值,因此无需参考sequence test_no_seq value)。

看来数据库无法从双表访问序列。谁能帮我解决这个问题?

谢谢。

感谢joop和a_horse_with_no_name,问题已解决

  1. 我使用了错误的Oracle驱动程序。我已经更新了我的代码以使用Postgres驱动程序
  2. 我在数据库中再次创建了同名的序列,但没有引号
  3. 我使用Java实体类中的所有大写字母正确地参考序列

相关内容

最新更新