Tag: sql

spring hibernate.createSQLQuery作为自定义实体返回

我在做Query query = hibernate.createSQLQuery(“select abc,def from table”); 是否可以将结果自动“解析”为“POJO”列表? 所以我可以这样做: List abc = query.list(); //CustomPOJO is pojo not entity , no @Entity tag

如何在JDBC预准备语句中转义文字问号(’?’)

我想创建一个JDBC PreparedStatement,如: SELECT URL,LOCATE ( ‘?’, URL ) pos FROM Links WHERE pageId=? ORDER BY pos ASC 哪一号? 是文字和第二? 是一个参数。 我可以使用CHAR(63)代替’?’ 但我认为额外的函数调用会减慢SQL执行速度。 有没有办法逃脱第一次? ? 编辑: 下面的代码测试dkatzel的断言是? 字符串中的字符不被视为标记: public class Test { public static void main(String[] args) throws SQLException { Connection conn = DriverManager.getConnection(“jdbc:h2:mem:test”); Statement stmt = conn.createStatement(); stmt.executeUpdate(“CREATE TABLE Links(URL VARCHAR(255) PRIMARY KEY,pageId BIGINT)”); stmt.executeUpdate(“INSERT […]

如何从Jooq中的其他自定义(concat,sum,count)列获取数据库中的所有结果列

我有一个表有1列的表1。 这是我需要映射的sql语句。 Select *,count(ID) as IdCount from Table1; 现在,sql查询结果将是7列(6个Table1列和1个IdCount列)。 但是当我使用此查询在Jooq中实现相同的内容时,它只获得一个列“IDCount”。 SelectQuery q = factory.selectQuery(); q.addSelect(Table1.ID.count().as(“IdCount”)); q.addFrom(Table1.TABLE1); 现在,结果记录集只有一列“IdCount”,而我需要的是所有列和一个附加列“IdCount”。 我也想在Jooq中使用7列。

结果集未打开。 validation自动提交是否关闭。 Apache Debry

我正在使用apache derby作为我的数据库。 我能够在数据库中执行插入操作。 以下是试图显示我唯一的表’MAINTAB’的内容的代码的摘录。 java.sql.Connection的实例是’dbconn’。 ResultSet word; Statement query; String getData=”SELECT THEWORD FROM MAINTAB”; try{ System.out.println(dbconn.getAutoCommit()); query = dbconn.createStatement(); word = query.executeQuery(getData); query.close(); dbconn.setAutoCommit(false); System.out.println(dbconn.getAutoCommit()); for(;word.next();) System.out.println(word.getString(1)); }catch(Throwable e){ System.out.println(“Table fetch failed or result data failed”);} 以下是输出。 org.apache.derby.jdbc.EmbeddedDriver loaded. Database testDB connected true false Table fetch failed or result data failed —SQLException Caught— SQLState: XCL16 […]

Oracle序列事务性

我需要一个特定的业务场景,在一个实体(而不是PK)上设置一个序列中的数字(序列必须是最小值和最大值之间的数字) 我定义了这样的序列: CREATE SEQUENCE MySequence MINVALUE 65536 MAXVALUE 4294967296 START WITH 65536 INCREMENT BY 1 CYCLE NOCACHE ORDER; 在Java代码中,我从序列中检索数字,如下所示: select mySequence.nextval from dual 我的问题是: 如果我在一个事务中称之为“ select mySequence.nextval from dual ”并且在另一个事务中同时调用相同的方法(并行请求),那么它确定序列返回的值是否不同? 是不是可以从第一个事务中读取未提交的值? 因为让我说我不会使用序列和一个普通表,我会增加自己的序列,然后如果trasactinalitY是默认的“READ COMMITTED”,事务2将能够读取相同的值。

我可以在Hibernate管理的表中添加“ON DELETE CASCADE”吗?

我有一些由Hibernate管理的表,有各种外键约束。 Cascade on delete目前仅由Hibernate管理。 为了解决测试数据,我经常手动创建和删除一些行。 如果我可以将ON DELETE CASCADE添加到外键约束中,那将对我有很大帮助,但我不知道Hibernate是否因为数据库在Hibernate之前移除了东西而绊倒了。 很多人似乎都专注于DDL。 我的目的不是指示Hibernate使用SQL DELETE CASCADES创建DDL。 我只是想知道如果我在数据库中指定ON DELETE CASCADE 除了在参考注释上具有JPA的cascade = CascadeType.REMOVE (例如@ManyToOne 之外是否有任何伤害。

IntelliJ IDEA – Java代码中SQL语法的突出显示

我使用IntelliJ 13作为一个项目的IDE,通过Spring的JDBC模板与DB进行通信。 当我在Java中拥有代码片段时,如下所示: getJdbcTemplate().queryForObject(“SELECT CONVERT(VARCHAR(255), NEWID())”, String.class); 其中getJdbcTemplate()返回初始化的JdbcTemplate对象,IDE对SQL语句具有正确的语法高亮(您可以在下面的代码段中看到它): .code {font-family: Monospace} .db-stmt {background: #EDFCED} .db-keyword {color: #000080; font-weight: bold;} .db-column {color: #7D0C8D; font-weight: bold;} .db-number {color: #0000FF;} .java-class {color: #39008E; font-weight: bold;} getJdbcTemplate().queryForObject(“SELECT CONVERT(VARCHAR(255), NEWID())”, String.class); 但是,当我使用另一种方法时,由我创建: protected String queryForString(String sql, Object… args) { try { return getJdbcTemplate().queryForObject(sql, String.class, args); } catch (RuntimeException e) { […]

使用SQL或作为集合对列表进行排序?

我的数据库中有一些日期条目。 什么是最好的?: 使用sql语句获取它们并按order by应用。 获取带有sql的列表,并使用collection.sort左右在应用程序中对它们进行排序? 谢谢

SQL(Java,h2):检索刚插入数据库的单个项的唯一ID的最佳方法是什么?

我目前的方法是这样的: SELECT TOP 1 ID FROM DATAENTRY ORDER BY ID DESC 这假定最新插入的项始终具有最高的唯一ID(主键,自动增量)。 这里闻起来有点不对劲。 备择方案?

来自ZonedDateTime UTC实例的Java日期和时间戳

我有一个java应用程序,我想在UTC中的时间。 目前,代码使用java.util.Date和java.sql.Timestamp的混合。 为了得到UTC的时间,我之前的程序员使用了: 对于日期: Date.from(ZonedDateTime.now(ZoneOffset.UTC)).toInstant(); 对于时间戳: Timestamp.from(ZonedDateTime.now(ZoneOffset.UTC).toInstant()); 但是我自己用这个代码运行了多个测试,这两行都返回当前日期/时间(在我当前的时区)。 从我读过的所有内容看来 ,Date / Timestamp没有zoneOffset值,但我找不到具体的声明。 无论如何要将timeZone(UTC)保留在Date或Timestamp对象中,还是需要进行一些重构并在整个应用程序中使用实际的ZonedDateTime对象? 此ZonedDateTime对象也将与sql的当前Timestamp对象兼容吗? 例: public static void main (String args[]) { ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneOffset.UTC); Timestamp timestamp = Timestamp.from(ZonedDateTime.now(ZoneOffset.UTC).toInstant()); Date date = Date.from(ZonedDateTime.now(ZoneOffset.UTC).toInstant()); System.out.println(“ZonedDateTime: ” + zonedDateTime); System.out.println(“Timestamp: ” + timestamp); System.out.println(“Date: ” + date); } 输出: ZonedDateTime: 2017-04-06T15:46:33.099Z Timestamp: 2017-04-06 10:46:33.109 Date: Thu […]