我正在使用 Fanbatis 框架来访问 MySQL 数据库。此处的文档:http ://www.talesframework.org/fanbatis/ 说我可以使用 @Column 注释将类属性映射到具有不同名称的列:
@Column{name="xx"} - By default column name is assumed to be the field name,
to change this use this annotation on a field
我有这个课...
using fanbatis
@Table {name = "APPS"}
class App
{
@Primary
Str? id
Str? name
@Column{name="description"}
Str? descr
}
使用此 SQL 创建的 APPS 表:
create table APPS (
ID varchar(36) not null,
NAME varchar(100) not null,
DESCRIPTION varchar(400) ,
primary key (ID)
);
我正在尝试使用此 DAO 从数据库中检索记录
class AppDao
{
static App? findById(Str id)
{
S<|
select * from apps where id = #{id}
|>
}
}
我的代码编译得很好,但是当我运行它时,传入现有记录的 ID,它会从数据库中检索记录并设置与列名匹配的属性值,但 app.descr 仍然为空。但是,如果我只是从“descr”属性中删除 @Column 注释并将其重命名以匹配列(“description”),那么代码运行良好并返回预期值。
-- 运行:auth::TestAppDao.testFindById... 测试设置! app.id: 0615a6cb-7bda-cc40-a274-00130281bd51 应用程序名称:我的应用程序 应用程序描述:空 测试失败 sys::TestErr: 测试失败: null != "MyApp descr" [sys::Str] fan.sys.Test.err (Test.java:206) fan.sys.Test.fail (Test.java:198) fan.sys.Test.verifyEq (Test.java:121) fan.sys.Test.verifyEq (Test.java:90) auth::TestAppDao.testFindById (TestAppDao.fan:36) java.lang.reflect.Method.invoke(未知) fan.sys.Method.invoke (Method.java:559) fan.sys.Method$MethodFunc.callList (Method.java:204) fan.sys.Method.callList (Method.java:138) fanx.tools.Fant.runTest (Fant.java:191) fanx.tools.Fant.test (Fant.java:110) fanx.tools.Fant.test (Fant.java:32) fanx.tools.Fant.run (Fant.java:284) fanx.tools.Fant.main (Fant.java:327) 测试拆机!
我做错了什么还是这是 Fanbatis 中的错误?