小编Luk*_*der的帖子

什么是JPQL中的SQL ANY运算符?

鉴于以下Oracle sql查询为PreparedStatement:

SELECT *
FROM my_table
WHERE field1 = 'foo'
and field2 =ANY (substr( ? , 1, 2) || '00000000',
                 substr( ? , 1, 4) || '000000',
                 substr( ? , 1, 6) || '0000',
                 substr( ? , 1, 8) || '00',
                 ?
                )
Run Code Online (Sandbox Code Playgroud)

我想翻译成JPQL查询.阅读JPQL文档,substr变得substringANY保持不变.在JPQL中ANY需要一个子查询.

如何将列表更改为子查询?或者我应该使用IN运算符还是应该生成带有一堆OR条件的JPQL字符串?

Oracle 10gR2
Java 5
JPA 2

java sql oracle hibernate jpa

2
推荐指数
1
解决办法
1593
查看次数

如何在Oracle标识符中转义双引号字符?

如何在Oracle标识符中转义双引号字符?

这不起作用:

CREATE TABLE "foo""bar" ("xxx" CHAR(1))
Run Code Online (Sandbox Code Playgroud)

sql oracle

2
推荐指数
1
解决办法
2201
查看次数

无法修复 JOOQ 查询中的“未知表”异常

我无法从我知道存在且我知道格式的数据库中获取数据。

在下面的代码片段中,“if conn != null”只是一个验证数据库名称、表名称等是否正确的测试,它们确实会验证。

下面的最后一行是产生异常的原因

public static HashMap<Integer, String> getNetworkMapFromRemote(DSLContext dslRemote, Connection conn, Logger logger) {
    HashMap<Integer,String> remoteMap = new HashMap<Integer, String>();
    // conn is only used for test purposes
    if (conn != null) {
        // test to be sure database is ok
        try
        {
            ResultSet rs = conn.createStatement().executeQuery("SELECT networkid, name FROM network");
            while (rs.next()) {
                System.out.println("TEST: nwid " + rs.getString(1) + " name " + rs.getString(2));
            }
            rs.close();
        }
        catch ( SQLException se )
        {
            logger.trace("getNetworksForDevices SqlException: " …
Run Code Online (Sandbox Code Playgroud)

java mysql sql jooq

2
推荐指数
1
解决办法
652
查看次数

在表中创建仅包含自动生成的字段的行 - SQL

我有下表:

CREATE TABLE "MIGRATION"."VERSION"
(
ID BIGINT PRIMARY KEY NOT NULL GENERATED BY DEFAULT AS IDENTITY,
VERSION_DATE timestamp DEFAULT CURRENT TIMESTAMP NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

我想在该表中插入一个"新行"但由于所有内容都是自动生成的,我该怎么办呢?

INSERT INTO "MIGRATION"."VERSION" VALUES();
Run Code Online (Sandbox Code Playgroud)

不工作.必须这样做,不能改变.

sql db2

2
推荐指数
1
解决办法
548
查看次数

JOOQ Mysql集成问题

我已经为MySQL设置了JOOQ。各种表的编译已完成,现在我尝试运行以下查询:

dsl.selectFrom(WALLPAPER).where(WALLPAPER.PARENT_ID.eq(id)).orderBy(WALLPAPER.VIEW_ORDER).fetchInto(WallpaperItem.class);

但我不断收到这个错误

"org.springframework.jdbc.BadSqlGrammarException: jOOQ; bad SQL grammar [select "library"."wallpaper"."id", "library"."wallpaper"."category_name", "library"."wallpaper"."icon", "library"."wallpaper"."view_order", "library"."wallpaper"."parent_id" from "library"."wallpaper" where "library"."wallpaper"."parent_id" = cast(? as int) order by "library"."wallpaper"."view_order" asc]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '."wallpaper"."id", "library"."wallpaper"."category_name", "library"."wallpaper' at line 1

可能是什么问题?

java mysql sql jooq

2
推荐指数
1
解决办法
965
查看次数

怎么在jooq做一笔钱

你好我有一个方法来计算数据库中的值,我使用jooq然后迭代结果来进行求和,聚合一些字段.我的问题是我可以在jooq语句中执行所有操作,而不必遍历我的resultSet并手动添加它们吗?这是我到目前为止所做的:谢谢.

BigDecimal dealDiscountAmt = BigDecimal.ZERO;
BigDecimal standardAmtOneTimeTrue = BigDecimal.ZERO;
BigDecimal standardAmtOneTimeFalse = BigDecimal.ZERO;
BigDecimal oneTimeFalseX12 = BigDecimal.ZERO;

/** Dao for jooq access to db. */
@Resource(name = "dmDaoContext")
protected DSLContext dmDao_;


List<JDealMetricWorkflowCriteriaRecord> retValList = new ArrayList<JDealMetricWorkflowCriteriaRecord>();
JDealMetricWorkflowCriteriaRecord newDealRecord = new JDealMetricWorkflowCriteriaRecord();

List<JMetricServicePxvRecord> records = dmDao_.selectFrom(METRIC_SERVICE_PXV)
    .where(METRIC_SERVICE_PXV.DEAL_ID.eq(dealId), METRIC_SERVICE_PXV.PRODUCED_DATETIME.eq(whenProduced))
    .fetch();

for (JMetricServicePxvRecord record : records) {
  //sum all dealDiscounts
  dealDiscountAmt = dealDiscountAmt.add(record.getStandardTotalPxv().subtract(record.getProposedTotalPxv());

  if (record.getOneTime()) {
    //sum all dealDiscounts if oneTime is true
    standardAmtOneTimeTrue = standardAmtOneTimeTrue.add(record.getStandardTotalPxv().subtract(record.getProposedTotalPxv());
  } else {
    //sum all dealDiscounts if …
Run Code Online (Sandbox Code Playgroud)

java field aggregate sum jooq

2
推荐指数
1
解决办法
1575
查看次数

jOOQ如何使用可选排序

我有一个从表中选择人员的查询。

SelectConditionStep<PersonRecord> select = context
    .selectFrom(Tables.PERSON)
    .where(Tables.PERSON.ISDELETED.eq(false));

if(searchValue != null && searchValue.length() > 0){
    select.and(Tables.PERSON.LASTNAME.likeIgnoreCase(String.format("%%%s%%", searchValue)));
}
List<PersonRecord> dbPersons = select
    .orderBy(Tables.PERSON.LASTNAME, Tables.PERSON.FIRSTNAME, Tables.PERSON.ID)
    .limit(length).offset(start)
    .fetch();
Run Code Online (Sandbox Code Playgroud)

这段代码工作得很好。因为我在数据表中显示数据,所以我需要具有可选/动态排序功能。到目前为止我没有找到解决方案。

java sql jooq

2
推荐指数
1
解决办法
411
查看次数

使用JOOQ进行删除,以在“ not in”子句中指定多个列

我想将Postgres数据库表与Jooq记录列表同步。

我有一个带有复合主键和每行中其他三个值的表

table(k1, k2, v1, v2, v3)
Run Code Online (Sandbox Code Playgroud)

例如,数据可能是

Last, First, Age, Weight, Height
Smith, Joe,  21,  75,     160
Jones, Pete, 23,  80,     180
Run Code Online (Sandbox Code Playgroud)

(请使用名称作为主键的不良形式。。。)

我的Java代码中也有该表的Jooq记录列表。假设有两个Java记录

[
   <Smith, Joe, 21, 75, 180>,
   <Taylor, Mark, 54, 90, 170> 
]
Run Code Online (Sandbox Code Playgroud)

我想发生的是当我运行一些代码时,

  • Joe Smith的数据库行的高度已更新
  • 将为Mark Taylor插入新行
  • Pete Jones的数据库行已删除

我设法创建了一个执行前两部分的功能,但是卡在了第三部分上。我希望在JOOQ中有一个非常简单的“一个班轮”,基本上

delete 
from my_table 
where (first, last) not in (values ('Joe', 'Smith'), ('Mark', 'Taylor')) 
Run Code Online (Sandbox Code Playgroud)

但是我无法解决相应的Java代码。

有任何Jooq大师在阅读此书吗?

我有明显的事情要注意吗?

java sql postgresql jooq

2
推荐指数
1
解决办法
643
查看次数

如何添加子选择以进行选择

我想执行这样的查询:

SELECT Table1.COL1,
       Table1.COL2,
       (SELECT SUM(Table2.COL3)
          FROM Table2
         WHERE Table2.UID = Table1.UID) SUMOF
  FROM Table1;
Run Code Online (Sandbox Code Playgroud)

我该怎么做?我通常创建一个Criteria添加,只ProjectionList填充. 我创建了一个来计算... COL1COL2
DetachedCriteriasum

现在,如何将这个分离的标准附加到主要标准?我的直觉说 - 这是某种需要添加到列表中的Projection,但我不知道如何.此外,不确定WHERE Table2.COL4 = Table1.COL5分离标准的工作原理.

此外,我确信此查询可能以不同的方式编写,例如使用join语句.如果有这样的方式运行它仍然很有趣.

DetachedCriteria 和主要的 Criteria

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Table2.class, "table2");
detachedCriteria
  .setProjection(
    Projections.projectionList()
      .add(Projections.sum("table2.col3"), "sumCol3")
  )
  .add(Restrictions.eq("table2.uid", "table1.uid"))
;

Criteria criteria = session.createCriteria(Table1.class, "Table1");
criteria
  .setProjection(
    Projections.projectionList()
      .add(Projections.property("Table1.col1"), "col1")
      .add(Projections.property("Table1.col2"), "col2")
  )
;
Run Code Online (Sandbox Code Playgroud)

实体(非常短的版本)

@Entity
@Table(name = "Table1")
public class Table1 {
  @Id
  @Column(name = "uid")
  public String …
Run Code Online (Sandbox Code Playgroud)

java sql hibernate jpa hibernate-mapping

2
推荐指数
1
解决办法
787
查看次数

什么是 Teradata 相当于 Oracle 的 DUAL

在 Oracle 中,我们可以编写它来使用SELECT语句生成单行。

SELECT 1 AS x FROM dual
Run Code Online (Sandbox Code Playgroud)

Teradata 的等价物是什么?

sql teradata dual-table

2
推荐指数
1
解决办法
1万
查看次数