我正在使用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"
这条语句。另一种选择是主键是字符串。
如果对于其他表也可以正常工作,为什么会发生这种情况?