我试图将我的自定义postgres类型Map到我的hibernate实体,我也在使用Quarkus与Kotlin和panache存储库。
->我的postgres设置.
CREATE TYPE money_and_currency AS (amount integer, currency varchar(3));
CREATE TABLE example_table (
"id" uuid,
"amount" money_and_currency,
);
字符串
->我的Hibernate实体设置.
@Entity
@Table(name = "example_table")
class ScheduledTransactionEntity : PanacheEntityBase {
@Id
@GeneratedValue
@Column(columnDefinition = "uuid", updatable = false)
@Column(nullable = false)
@Embedded
var amount: MoneyAndCurrency? = null
}
@Embeddable
data class MoneyAndCurrency(val amount: Int, val currency: String)
型
当我尝试向数据库中插入新数据时,我遇到了这个错误:
org.hibernate.exception.SQLGrammarException:无法执行语句[错误:关系“scheduled_transactions”的列“currency”不存在
我还尝试在@Column注解中添加一个columnDefinition=“money_and_currency”,但没有任何变化。
我只需要知道如何正确地Map一个复合自定义类型使用休眠。
1条答案
按热度按时间vlju58qv1#
实体是正确的,但缺少@Struct(name =“money_and_currency”)注解,该注解告诉hibernate数据库中声明的类型是什么,hibernate应该Map到@Entity
字符串