在PostgreSQL中创建表时Ormlite自动引用冲突

时间:2018-08-07 01:09:13

标签: java postgresql kotlin ormlite

我正在使用Ormlite使用Ormlite生成的以下SQL语句创建表:

CREATE TABLE "my_table" ("main_text" VARCHAR(255) , "secondary_text" VARCHAR(255) NOT NULL , PRIMARY KEY ("main_text") )

从此DAO对象(科特琳):

@DatabaseTable(tableName = "my_table")
data class SomeDAOObject
(
        @DatabaseField(columnName = "main_text", id = true)
        val mainText: String = "",

        @DatabaseField(columnName = "secondary_text", canBeNull = false)
        val secondaryText: String = ""
)

(Java)

@DatabaseTable(tableName = "my_table")
public class SomeDAOObject
{
    @DatabaseField(columnName = "main_text", id = true)
    private String mainText = "";

    @DatabaseField(columnName = "secondary_text", canBeNull = false)
    private String secondaryText;


    public User(String mainText, String secondaryText)
    {
        this.mainText = mainText;
        this.secondaryText = secondaryText;
    }

    public String getMainText()
    {
        return mainText;
    }

    public void setMainText(String mainText)
    {
        this.mainText = mainText;
    }

    public String getSecondaryText()
    {
        return secondaryText;
    }

    public void setSecondaryText(String secondaryText)
    {
        this.secondaryText = secondaryText;
    }
}

但是在执行这样的语句后,Ormlite会抛出

org.postgresql.util.PSQLException: ERROR: relation «my_table» does not exist.

这是在doStatements的方法TableUtils中抛出的

我的猜测是问题是由Ormlite在每个对象中插入的引号引起的,因此不是简单地CREATE TABLE my_table而是CREATE TABLE "my_table"这条语句。另一种选择是主键是字符串。

如果对于其他表也可以正常工作,为什么会发生这种情况?

0 个答案:

没有答案