【发布时间】:2016-05-08 01:45:19
【问题描述】:
当我使用此语句时,它不会返回结果。
Result<Record> result = (Result<Record>) jooq
.select()
.from("Employees")
.where(DSL.cast("FirstName", MySQLDataType.BINARY)
.eq(DSL.cast(firstName, MySQLDataType.BINARY)))
.fetchOne();
我只想选择一个结果。
结构:
--
-- Table structure for table `Employees`
--
CREATE TABLE IF NOT EXISTS `Employees` (
`id` int(11) NOT NULL,
`FirstName` varchar(100) NOT NULL,
`LastName` varchar(150) NOT NULL,
`Age` tinyint(4) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
我要选择的是 Jack,它存在但返回 null。
例子:
SELECT * FROM Employees WHERE FirstName = Jack;
【问题讨论】:
-
null 表示没有找到记录 - 打开 Jooq 在 DEBUG 级别的日志记录,您将看到发送了什么查询。这应该可以帮助您了解正在发生的事情...... -
@Shrekt 你能添加一些示例数据吗?表中有什么,名字是什么?
-
@Shrekt 您是否生成了架构?我想你可以试试
jooq.select().from("Employees").where(Employees.FirstName.cast(MySQLDataType.BINARY).eq(DSL.cast(firstName, MySQLDataType.BINARY))).fetchOne(); -
为什么需要演员表?这样一个简单的查询应该看起来像
Result<EmoloyeeRecord> result = jooq.selectFrom(Tables.EMPLOYEE).where(Tables.EMPLOYEE.FIRST_NAME.eq(firstName)).fetchOne(); -
我可以在没有架构的情况下做到这一点吗?只是选择从数据库中获取它,就像我正在尝试做的那样?