我是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,问题已解决
- 我使用了错误的Oracle驱动程序。我已经更新了我的代码以使用Postgres驱动程序
- 我在数据库中再次创建了同名的序列,但没有引号
- 我使用Java实体类中的所有大写字母正确地参考序列