我有一个实体:
@Data
public class MoneyEntity {
@Id
@GeneratedValue
@Column(name = "id", updatable = false, nullable = false)
private UUID id;
@Column(name = "money")
private BigDecimal money;
@Column(name = "date")
private Instant date;
}
目标是通过本机查询将其保存到PostgreSQL数据库:
@Modifying
@Query(value = "INSERT INTO performance_info (id, money, date) VALUES "
+ "(:#{#entity.id}, "
+ ":#{#entity.nav}, "
+ ":#{#entity.date} )"
+ " ON CONFLICT (date) DO NOTHING", nativeQuery = true)
void saveWithout(MoneyEntity entity);
问题在于,大十进制值的转换方式类似于bytea
,而不是numeric
。以下是错误消息:
原因:org。postgresql。util。PSQLException:错误:“money”列的类型为numeric,但表达式的类型为bytea提示:您需要重写或强制转换表达式
我已经尝试使用key和class
@Type(Type=“org.hibernate.Type.BigDecimalType”)
添加注释。没有效果。
尝试实现自定义转换器:
@Converter
public class DecimalConverter implements AttributeConverter<BigDecimal, Double> {
@Override
public Double convertToDatabaseColumn(final BigDecimal attribute) {
return attribute.doubleValue();
}
@Override
public BigDecimal convertToEntityAttribute(final Double dbData) {
return BigDecimal.valueOf(dbData);
}
}
问题是,只有BigDecimal可以转换为数字Postgres类型。
有没有办法保存BigDecimal属性与使用Spring Data的本机查询?
可以使用数字或十进制,并指定所需的精度。在这里看一下Postgresql文档。
例如:
t.decimal "money", precision: 12, scale: 4, default: "0.0"
问题内容: 我尝试将以下代码添加到spring数据jpa存储库中: 但是应用程序不能以以下例外开头: 由以下原因引起:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:第1行第59列附近的值[插入commit_activity_link(commit_id,activity_id)VALUES(?1,?2)] 我哪里错了? 问题答案:
我使用的是vertx jdbc客户端(http://vertx.io/docs/vertx-jdbc-client/java/)我的数据库连接。这适用于除BigDecimal之外的所有数据类型。 在我的数据库中,类型是decimal(13,2),在Java中,我使用的是BigDecimal数据类型。我只是想读书 不幸的是,我得到了以下例外: 查看io.vertx.core.json.Json.ch
SqliteOpenHelper只是一个工具,是SQL世界和OOP之间的一个通道。我们要新建几个类来请求已经保存在数据库中的数据,和保存新的数据。被定义的类会使用ForecastDbHelper和DataMapper来转换数据库中的数据到domain models。我仍旧使用默认值的方式来实现简单的依赖注入: class ForecastDb( val forecastDbHelper:
我使用注释和注释执行查询,并从数据库表中删除记录。 错误: xxx的例外。xxx。xx,原因='javax。坚持不懈TransactionRequiredException:执行更新/删除查询“和异常=”执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredException:执行更新/删除查询'
我有这样的查询(select id,reffid,someData from myTable): 我需要查询来执行以下操作:如果我有少于 4 个具有相同值的 reffid,则添加具有相同 reffid 的行并在 someData 中添加 -。结果查询应如下所示: 如何做到这一点?
我使用Spring引导和Spring数据JPA。它工作得很好但是!我需要使用复杂的本地查询从Oracle数据库(源数据从SAP ERP)。 假设查询包含5个joned表(一个键或组合键)。我可以使用很多参数。 解决方案: 1)由于耗时,使用JPA为该查询编写新查询是不真实的。创建表之间的所有键关系似乎很复杂。 2)为了运行这些查询,我使用JDBC。这很容易,因为我准备了本机查询。但我深信这种做法是