【发布时间】:2017-03-22 03:17:42
【问题描述】:
我有问题,我认为可以轻松解决,但我做不到。
我有一个 A 类和 B 类,A 类存储在 postgres db 中:
public class A() {
private B b;
...
}
public class B() {
private String firstName;
private String lastName;
private String personId;
private String userName;
}
在数据库中,b 类的对象作为字符串 userName 存储在 A 实体中。因此,要在应用程序中从 db 中获取 A 类对象,我必须读取 A 记录并创建 B 类对象。 我想用 jooq 创建查询,但 jooq 不知道如何将此字符串用户名转换为 B 类的实例。如何告诉 jooq 它应该如何将数据库 A 对象映射到 A 类对象。
A类相当于Person,B类相当于Executor。
我的查询
return jooq.select()
.from(PERSON)
.where(PERSON.ID.eq(id))
.fetchOneInto(Person.class);
这是我的查询引发的异常
Caused by: org.jooq.exception.DataTypeException: Cannot convert from superadmin (class java.lang.String) to class fi.ssm.oksa.domain.person.Executor
at org.jooq.tools.Convert$ConvertAll.fail(Convert.java:1118) ~[jooq-3.8.5.jar:na]
...
我想我应该使用这个http://www.jooq.org/doc/3.8/manual/code-generation/custom-data-type-bindings/,但我无法实现它。
【问题讨论】:
-
(为了记录,通过用A和B“抽象”你的具体类名,你让问题变得更复杂了...... :)我建议你要么坚持抽象,要么真实姓名)
-
是的,你是对的。我会更改它以便其他人可以使用它。
标签: java sql postgresql dao jooq