Tag: 休眠

如何使用Hibernate将UUID共享为两个表中的主键?

我正在使用MySql作为数据库,并旨在以二进制(16)格式存储生成的UUID。 在DB中我有两个表: 存储用户的详细信息。 存储用户的密码。 我有两个实体UserDetails和UserLogin来分别表示这些表。 他们如下: UserDetails类: package Entities import org.hibernate.annotations.GenericGenerator import org.hibernate.annotations.Type import java.io.Serializable import java.util.* import javax.persistence.* /** * class UserDetails */ @Entity @Table(name = "user_details") data class UserDetails( /** * The first name field for the user details table. */ @Column(name = "first_name") var firstName: String, /** * The last name field […]

选择在休眠

我怎样才能将ST_Distance(u.position,st_sets(st_makepoint(:lat,:lng),4326))添加到Hibernate的select语句中? @Query("""SELECT u FROM Driver u ORDER BY ST_Distance(u.position, st_setsrid(st_makepoint(:lat, :lng), 4326)) """) fun findNearest(@Param("lat") lat: Double, @Param("lng") lng: Double): List<Driver> 当我尝试这个: @Query("""SELECT u, ST_Distance(u.position, st_setsrid(st_makepoint(:lat, :lng), 4326)) as position FROM Driver u ORDER BY ST_Distance(u.position, st_setsrid(st_makepoint(:lat, :lng), 4326)) """) fun findNearest(@Param("lat") lat: Double, @Param("lng") lng: Double): List<Driver> 我得到了以下错误: Caused by: java.lang.IllegalStateException: No data type […]

在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 […]

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 […]

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", […]

Spring Annotation @Transactional忽略了Kotlin中未经检查的异常

我有JPA模块中的以下方法: @Throws(MyCustomException::class) @Transactional(rollbackOn = arrayOf(MyCustomException::class) fun update(test: Test): UpdatedTestMapped { //modify test try{ myRepository.save(test) }catch(jse: JpaSystemException) { throw MyCustomException() } //rest of code return mapper.map(test) } 在这种情况下,如果编码不正确,从hibernate框架中save()方法应该抛出一个应该被捕获的异常,并抛出MyCustomException 。 但是在运行时,第一个异常被忽略, MyCustomException不会被抛出,剩下的代码和返回语句正在被执行,第一个异常在执行return语句之后被抛出,但是没有被处理。 我有类似的方法只有没有返回语句和异常被抛出和捕获。 我不知道这种情况的原因是什么。 我已经编辑添加stacktrace java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F…' for column 'note' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) ~[mysql-connector-java-5.1.44.jar:5.1.44] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) ~[mysql-connector-java-5.1.44.jar:5.1.44] at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) ~[mysql-connector-java-5.1.44.jar:5.1.44] at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527) […]