当前位置: 首页 > 知识库问答 >
问题:

按名称实例化jooq字段

利博远
2023-03-14
List<org.jooq.Field<?>> fields = new ArrayList<org.jooq.Field<?>>();
Field<?> field = Factory.field("somefield");
fields.add(field);
field = Factory.field("someotherfield");
fields.add(field);

Field<Object> fieldPK = Factory.field("somePKField"); 
Condition condition = fieldPK.equal(123);

Factory factory = new Factory(connection, SQLDialect.POSTGRES);
SelectFinalStep step = factory.select(fields).from("sometable").where(condition);
String query = step.getQuery().getSQL(true);

有什么方法可以创建一个知道它们的名称的字段或表吗?理想情况下,我可以通过字段的名称和父表来指定字段,使用jOOQ为我构建“sometable”.“somefield”字符串。

共有1个答案

松景铄
2023-03-14

jOOQ知道对标识符建模的org.jOOQ.name类型。它可以用dsl.name(String...)从字符串形式的完全限定名构造,例如:

Name name1 = name("column");
Name name2 = name("table", "column");
Name name3 = name("schema", "table", "column");
Name name4 = name("catalog", "schema", "table", "column");

然后可以将这样的名称传递给DSL.Field(name)构造函数,例如:

Field<Object> field1 = field(name("table", "column"));
Field<String> field2 = field(name("table", "column"), String.class);

附带说明:这个问题是在Jooq2.x的上下文中提出的,但是很少有人还在使用这个旧版本,这就是为什么这个答案假设使用Jooq3.x

 类似资料:
  • 嗨,我必须读取一个xml文件,在代码的一部分中有一些字段标签,名称如示例中所述 我只想读取名为“link\u pdf”的字段 如果我用这个密码 我可以读取值,但在某些情况下这不是一个好的工作,如何通过字段名访问值? 不是工作

  • 我有一个应用程序正在从jooq切换到jdbc,我使用jdbc创建了一个表,但我需要编辑一些jooq查询来加入它,问题是自动生成的jooq tables类无法识别它,所以有没有办法通过字符串名引用表? 下面是一些示例代码: 我如何在此处加入“连接”表?没有桌子。连接,因为它是以不同的方式创建的。 有很多疑问,所以我们希望根据需要逐步进行转换。 更新:我尝试添加以下内容,并且查询运行,但是我尝试获取的

  • 问题内容: 我正在尝试按其字段(即 Person.java) 对Java对象进行分组 __ 因此,如果我有 n个 Person对象,那么将所有人都以“ David”命名的最简单的方法是? 我在Google上发现了此文件(但无法编译),这似乎是我正在寻找的东西:http : //www.anzaan.com/2010/06/grouping-objects- using-objects-proper

  • 问题内容: 我使用ServiceStack,并且想在Redis中将对象存储为散列,并通过id访问其部分(字段),而无需序列化整个对象,所以我有一个问题: 有没有一种方法可以使用“ Id”以外的其他属性来标记ID字段?我正在使用命名约定,其中id字段的名称类似于“类 名+ ID”。因此,在用户类中,将在 Userclass ID,项目类ItemId等字段中。 是否有一种方法可以更新对象中更改的属性,

  • 当我尝试编译这段代码时 对于g 4.8.2,我得到以下错误消息 (与3.4版本的叮当声几乎相同)。 首先,我认为代码是正确的,应该进行编译,因为foobar是模板声明中的一个依赖名称,应该仅在模板实例化的第二阶段进行查找。在最后一行中完成此操作时,已声明“foobar(int)”。顺便说一句,当我取消注释最上面的行时,代码会编译,但这两个声明都在实例化之前,所以这应该无关紧要。 其次,我觉得错误信

  • 我使用jooq针对本地数据库生成对象,但在以后的生产中运行“for real”时,实际数据库将具有不同的名称。为了解决这个问题,我使用