gpt4 book ai didi

mysql - 如何使 Fanbatis @Column 注释将 Fantom 类属性正确映射到数据库列?

转载 作者:行者123 更新时间:2023-11-29 00:23:30 24 4
gpt4 key购买 nike

我正在使用 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”),则代码运行正常并返回预期值。

-- Run:  auth::TestAppDao.testFindById...Test setup!app.id: 0615a6cb-7bda-cc40-a274-00130281bd51app.name: MyAppapp.descr: nullTEST FAILEDsys::TestErr: Test failed: 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 (Unknown)  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)Test teardown!

我是不是做错了什么或者这是 Fanbatis 中的错误?

最佳答案

这可能是由于区分大小写 - 请参阅 MySQL 9.2.2. Identifier Case Sensitivity

Although database and table names are not case sensitive on some platforms, you should not refer to a given database or table using different cases within the same statement. The following statement would not work because it refers to a table both as my_table and as MY_TABLE:

mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;

尝试:

@Column{name="DESCRIPTION"}

this question 中也提到了它.

关于mysql - 如何使 Fanbatis @Column 注释将 Fantom 类属性正确映射到数据库列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20155924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com