【发布时间】:2013-10-19 14:03:51
【问题描述】:
鉴于此表:
CREATE TABLE todouser
(
id SERIAL,
email varchar(80) UNIQUE NOT NULL,
password varchar(80),
registered boolean DEFAULT FALSE,
confirmationUri varchar(280),
CONSTRAINT todouser_pkey PRIMARY KEY (id)
);
和类:
class TodoUser {
Long id;
String email;
String password;
String confirmationUri;
boolean registered;
}
我正在尝试执行以下操作:
TodoUser user = sql.firstRow("""SELECT * FROM todouser WHERE email = $email""")
即我希望 Groovy 将 GroovyRowResult 强制转换为我的基本 POGO,而不是像 this answer 那样自己构建它。
我认为这是合理的,因为 GroovyRowResult 实现了 Map 并且它只是 POGO 实例变量名称映射的 Map 键...... Groovy 有某种支持。
问题在于,在 PostgreSQL 表中,“confirmationUri”实际上显示为“confirmationuri”......因此映射失败,因为在我的 POGO 中“U”为大写。
我已经尝试在表和 POGO 中将“confirmationUri”更改为“confirmation”,并且它可以工作...但为了记录,您将如何在 Groovy 中解决这个问题?
我似乎记得有一些方法可以在 Groovy 类中重写,这有助于解决“set/get”调用。但这是正确的方法吗?当调用“get/set”方法时,是否有一些注释可以用来将“confirmationUri”标记为“confirmationuri”?或者也许在 Groovy 中有其他方法可以做到这一点?
【问题讨论】:
-
我认为您的编辑应该是对问题的回答。让其他人回答,最高的投票可以说是最好的方法。
-
谢谢迈克尔,我接受了你的建议。
标签: groovy