Tag: postgresql

Kotlin&Hibernate IllegalArgumentException:无法将字符串字段Job.name设置为Job

我试图坚持一个单一的对象与hibernate到Postgres数据库。 这个类看起来像这样: @Entity @Table(name = “jobs”) data class Job( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Int? = 0, var name: String? = “” ) 我用下面的代码创建一个hibernate会话: fun createSessionFactory(targetClass: Class): SessionFactory? { val registryBuilder = StandardServiceRegistryBuilder() if (sessionFactory == null) { val configuration = hashMapOf( Environment.DRIVER to “org.postgresql.Driver”, Environment.URL to “jdbc:postgresql://localhost:5432/testdb”, Environment.DIALECT to “org.hibernate.dialect.PostgreSQL9Dialect”, Environment.USER to “user”, […]

Spring JPA查询总是使用序列扫描而不是索引扫描

我有一个简单的查询 @Query(value = “select * from some_table where consumer_id=:consumerId and store_id=:storeId and cancelled_at is null”, nativeQuery = true) fun checkIfNewConsumer(consumerId: BigInteger, storeId: BigInteger): List 当我运行查询时,直接对超过3000万行的表进行解释 Index Scan using select_index on some_table (cost=0.56..8.59 rows=1 width=86) (actual time=0.015..0.015 rows=0 loops=1) Index Cond: ((consumer_id = 1234) AND (store_id = 4) AND (cancelled_at IS NULL)) Planning time: 0.130 ms […]

如何用一个复合types的数组来调用postgres函数

我正在寻找如何调用具有参数的复合types的postgres函数的建议。 问过类似的问题,但我find了一个满意的答案。 我有以下复合types: CREATE TYPE collect.event_record AS ( event_type integer , event_timestamp timestamp without time zone , event_data text , event_import_id integer ); 我有以下function: CREATE OR REPLACE FUNCTION collect.insert_events( fail_on_duplicates boolean, source_public_id text, event_records collect.event_record[]) RETURNS integer AS … 在postgres方面一切似乎工作正常。 现在我只需要从java / kotlin中调用它。 我们使用这个版本的postgres驱动程序: compile group: “org.postgresql”, name: “postgresql”, version: “9.4.1212” 在PreparedStatement有一个方法,似乎是我在找什么: void setArray (int […]

将postgresql查询结果返回给一个函数

我现在正在使用expressjs,kotlin和PostgreSQL来处理Web API。 我以面向对象的方式组织我的项目。 我还为数据库创建了一个类,使所有经常被调用的查询成为一个函数。 例: fun addUser(firstName: String, lastName: String, password: String, classId: Int){ client.query(“INSERT INTO users(first_name, last_name, password, class_id) values($1, $2, $3, $4)”, arrayOf(firstName, lastName, password, classId)); } 这不起作用,但是当我试图发出一个SELECT查询并返回数据集的函数调用者,因为查询是异步的。 我已经尝试将结果赋值给数据库对象的一个​​属性,并在赋值后立即使用它,但是当我永久检查它的值时,似乎该值不能被赋值。 有谁知道我可以如何返回值的函数调用者? 预先感谢您的答案。

在JOOQ中,如果我直接使用底层连接,是否保持我的事务状态?

让我们假设我有一个DSLContext对象,我需要下拉到JDBC Connection对象的级别来执行一些非JOOQ逻辑。 (在我的情况下,我想使用Postgres驱动程序的CopyManager对象)。 如果我的DSLContext是事务性的,那么直接在Connection上执行的操作是否会被相同的事务包装? 我正在使用JOOQ的默认交易提供者。 例如(Kotlin代码,但对于Java用户应该是非常透明的) dsl.transaction { transactionConfig -> val transactionalDSL = DSL.using(transactionConfig) transactionalDSL.connection { connection -> val manager = CopyManager(connection as BaseConnection) manager.copyInto(table, inputStream, fields) } }

@Param不能在Spring Data JPA中工作

我正在建立一个Spring Data JPA Repo来处理postgresql数据库中的序列。 我假设这将是非常简单的: @Query(nativeQuery = true, value = "CREATE SEQUENCE IF NOT EXISTS ':seq_name' START WITH :startAt") fun createSequence(@Param("seq_name") seq_name: String, @Param("startAt") startAt: Long = 0) @Query(nativeQuery = true, value = "SELECT nextval(':seq_name')") fun nextSerial(@Param("seq_name") seq_name: String) : Long @Query(nativeQuery = true, value = "DROP SEQUENCE IF EXISTS ':seq_name'") fun dropSequence(@Param("seq_name") seq_name: String) […]

测试JOOQ postgres jsonb列键是否存在

我有一个表,其中包含名为tags的jsonb列。 每行中的tags元素可能包含或不包含称为group的字段。 我的目标是通过tags.group为tags包含group字段的所有行进行group 。 像下面的postgres查询一样: select tags->>'group' as group, sum(n) as sum from TABLE where tags ? 'group' group by tags->>'group'; 我试图把它变成JOOQ,无法找到如何表示where tags ? 'group' where tags ? 'group'条件。 例如, val selectGroup = DSL.field("{0}->>'{1}'", String::class.java, TABLE.TAGS, "group") dsl().select(selectGroup, DSL.sum(TABLE.N)) .from(TABLE) .where(TABLE.TAGS.contains('group')) .groupBy(selectGroup) 这相当于在postgres中包含条件@> 。 但是我需要做存在的条件? 。 我怎么能在JOOQ表达呢?

将postgresql查询结果返回给一个函数

我现在正在使用expressjs,kotlin和PostgreSQL来开发Web API。 我以面向对象的方式组织我的项目。 我还创建了一个数据库类,使所有经常被调用的查询作为一个函数。 例: fun addUser(firstName: String, lastName: String, password: String, classId: Int){ client.query("INSERT INTO users(first_name, last_name, password, class_id) values($1, $2, $3, $4)", arrayOf(firstName, lastName, password, classId)); } 这不起作用,但是当我试图发出一个SELECT查询并返回数据集的函数调用者,因为查询是异步的。 我已经尝试将结果赋值给数据库对象的一个​​属性,并在赋值后立即使用它,但是当我永久检查它的值时,似乎该值不能被赋值。 有谁知道我可以如何返回值的函数调用者? 预先感谢您的答案。

在Hibernate中映射PostgreSQL LTREE列时出错

我试图在休眠映射postgresql ltree列如下: 在实体中:私人字符串路径; @Column(name="org_path", columnDefinition="ltree") public String getPath() { return path; Table structure: CREATE TABLE relationship ( relationship_id int4 NOT NULL, parent_organization_id uuid NOT NULL, child_organization_id uuid NOT NULL, org_path ltree NOT NULL, CONSTRAINT relationship_pk PRIMARY KEY (relationship_id), CONSTRAINT organization_fk3 FOREIGN KEY (parent_organization_id) REFERENCES organization(organization_id) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT organization_fk4 FOREIGN KEY […]

TimeZone没有显示

我正在使用IntelliJ为我的程序(我使用Kotlin和Java语言),我试图通过使用从我的数据库查询并发送到浏览器(我使用邮递员看到结果)。 当我调试我的代码,并通过查询的结果时区似乎确定'就像我想要的方式,甚至显示-7(我和UTC之间的时间差),但是当涉及到浏览器(邮差)它显示UTC时间和+0000,例如(“日期”:“2017-10-12T15:00:33.000 + 0000”,而不是“日期”:“2017-10-12T15:00:33.000 + 0007”)。 我尝试了很多选择,浪费大约6个小时来找到解决方案,但没有任何工作。 感谢您的帮助