Tag: postgresql

Kotliquery不关闭postgresql连接

我正在使用kotliquery jdbc框架的Kotlin 刚刚遇到问题。 我正在使用远程PostgreSQL数据库。 经过一些调用数据库,我得到以下错误Failure: too many clients already 。 这是由于100个连接idle造成的。 我试图创建1点,我必须做配置。 这就是我所说的BaseDAO。 该类的相关代码如下所示: import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariDataSource import kotliquery.Session import kotliquery.sessionOf import javax.sql.DataSource class BaseDAO { companion object { var url: String = "jdbc:postgresql://server.local:5432/myDatabase" var user: String = "postgres" var pass: String = "postgres" val config: HikariConfig = HikariConfig() private fun dataSource(): DataSource { […]

Vert.x使用BLOB和休眠区分数据库中的数据

我尝试使用Hibernate 5.2.11.Final(BLOB类型)和Vert.x 3.4.2在数据库(Postgresql 9.6.5)的响应块中发送二进制数据,但我收到错误的响应(它看起来像我一些位缺失)。 这是我在Kotlin的代码: fun getFile(user: User, messageId: Long, fileId: Short, response: HttpServerResponse) { val mediaContent = mediaContentRepository.getFile(messageId, fileId) when { mediaContent == null -> response.apply { statusCode = 404 }.end() conversationUserRepository.authorize(user.id!!, mediaContent.message!!.conversation!!.id, mediaContent.message!!.created) -> response.setChunked(true) .putHeader("Content-Disposition", "attachment; filename=\"${mediaContent.name}\"") //TODO: prevent injections .putHeader("Content-Type", mediaContent.contentType) //.putHeader("Content-Length", mediaContent.file.length().toString()) .apply { //write(Buffer.buffer().apply { delegate.setBytes(0, mediaContent.file.binaryStream.readAllBytes()) }) val […]

JOOQ总和字段值:BigDecimal到Int

我使用postgres的数值字段。 JOOQ把它变成BigDecimal 。 我的JOOQ查询是: val sumField = DSL.sum(TABLE.VALUE) val query = dsl().select(TABLE.id.`as`("id"), sumField.`as`("sum")) .from(TABLE) .groupBy(TABLE.id) .fetch() .map{ record -> SumById( id = record.get("id").toString(), sum = record.get("sum").toString().toInt() ) } SumById是一个带有id和sum字段的数据类: data class SumById (val id: String, val sum: Int) 我可以通过执行.toString().toInt()来获得Int总和。 但是我想知道是否有更好的方法把BigDecimal为Int 。 PS 我想这是一个比JOOQ问题更多的kotlin问题。

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

我试图坚持一个单一的对象与休眠到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", […]

Kotlin + JUnit + postgres进行集成测试:泄漏连接

我建立了一个运行13个集成测试的测试课程。 所有的测试都涉及1个数据库,1个模式和3个表格。 测试类的设置是为了使用@BeforeClass创建测试数据库,并使用@AfterClass删除测试数据库。 在每个测试的setUp阶段,我迁移模式并用人工数据填充表格。 然后在tearDown阶段,我删除模式。 在每个测试中,我运行我的测试逻辑对测试数据库: class MyTest { companion object { private val helper = MyHelper() @BeforeClass @JvmStatic fun createTestDatabase() { helper.createTestDatabase() } @AfterClass @JvmStatic fun removeTestDatabase() { helper.deleteTestDatabase() } } @Before fun setUp(){ // migrate the schema and populate the tables with artificial data helper.migrate() helper.populate() } @After fun tearDown() { // remove […]

如何通过Kotlin暴露ORM使用Postgresql枚举类型?

我已经添加了一些Postgresql类型作为扩展Exposed。 它有两个名为enumeration和enumerationByName就绪类型。 我测试了两个都没有成功将postgre枚举类型映射到Kotlin枚举类。 在阅读和写作都会产生错误 enum class TicketStatus(val status: String) { Open("open"), Close("close"), InProgress("in_progress") } class Ticket(id: EntityID<UUID>) : Entity<UUID>(id) { companion object : EntityClass<UUID, Ticket>(Tickets) var geom by Tickets.geom var description by Tickets.description var status by Tickets.status var createdAt by Tickets.createdAt var updatedAt by Tickets.updatedAt var owner by Tickets.owner } 阅读时: java.lang.IllegalStateException: open is not […]

无法在Kotlin中运行“Where In”查询

我试图让这种查询(我正在与postgres)工作: select * from users where user_id in [1,2,3] 唯一的问题是查询不能用这种[1,2,3]的列表工作,只能使用这种类型(1,2,3)。 我试图将列表[1,2,3]转换为列表(1,2,3),但在Kotlin它并没有让我这样做.. 我会喜欢一些帮助。