当前位置: 首页 > 知识库问答 >
问题:

如何在spring-boot和jpa中仅在数据库中保存月份和年份

秋建义
2023-03-14

我有个问题,我有一个月/年类型的输入,我只是想在我的数据库中获取此信息,但我得到了以下错误:

Fri Jul 22 11:56:43 BRT 2022

出现意外错误(类型=错误请求,状态=400)。验证object='faura'失败。错误计数:1 org.springframework.validation。绑定异常:org.springframework.validation。BeanPropertyBindingResult:1 errors字段“mesReferencia”上对象“fatura”中的字段错误:拒绝值[2022-05];代码[类型Mismatch.fatura.mesReferencea,类型Mismatick.mesReferenceia,类型Misfatch.java.time.LocalDate,类型Missatch];参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[fatura.mesReferenceia,mesReferencia];参数[];默认消息[mesReferencia]];默认消息[未能将“java.lang.String”类型的属性值转换为属性“mesReferencia”所需的“java.time.LocalDate”类型;嵌套异常为org.springframework.core.covert.ConversionFailedException:未能从类型[java.lang_String]转换为类型值“2022-05”的[@javax.persistence.Column@com.fasterxml.jJackson.annotation.JsonFormat@org.springframework.format.annotion.DateTimeFormat java.time.LocalDate];嵌套异常为java.lang.IllegalArgumentException:解析值[2022-05]]的尝试失败

下面是我的课堂模型:

public class Fatura {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;


@Column(name = "mes_referencia")
@DateTimeFormat(iso = ISO.DATE, pattern = "yyyy, mm")
private LocalDate mesReferencia;

类中包含访问器方法

下面是我在视图中输入的内容

<div class="col-lg-2 col-sm-12">
                                <label for="mesRef">Mês Referência:</label>
                                <input type="month" th:field="*{mesReferencia}" pattern="yyyy-MM" class="form-control" id="mesRef">
                            </div>

我如何解决这个问题?

共有1个答案

慕光赫
2023-03-14

一种选择是将mesReferencia建模为Java . time . YearMonth。JPA不直接支持year month,但Hibernate类型支持。有关如何使用Hibernate类型的更多信息,请参见此处。如果您不能自由地使用Hibernate类型或者不能自由地更改数据库列类型,那么您将需要一个自定义转换器来将LocalDate映射到您的数据库列。这里可以找到一个很好的例子。

 类似资料:
  • 问题内容: 我正在写一个PHP应用程序,它将学生数据存储在MySQL关系数据库中。我试图找到最好的方式/数据类型来存储一个月和一年在一起,而没有一天。我不知道是否应该将其存储为DATE并以某种方式使用php将日期存储为第一天,或使用我目前不熟悉的其他数据类型。理想情况下,我不想存储一天,因为一天不会总是相同的,并且如果将来更改一天,则需要更改php源代码。 为了获取更多背景信息,我存储了一个学生的

  • 我在我的应用程序中使用了这个angularJS日期选择器,我想知道是否有办法在日历中只显示月份和年份,并删除日期? 这就是我如何使用日期选择器: 我试图添加,但它只更改选定的日期,而不更改日期选择器本身。

  • 我想用MySQL和JPA设置Spring Boot。为此,我创建了:Person PersonRepository公司 个人控制器 开始上课示例: 对于数据库配置,我创建application.properties 所以我有项目结构: 但结果我有例外: 作为一个例子,我使用:spring boot示例数据jpa/pom。xml

  • 例子: 例如:String str=“11/20”(MM/yy)希望通过在Java中以上述格式传递字符串来获取月份名称和年份(例如:11月/20)

  • 我想使用JavaFx、Spring Boot和Spring Data JPA制作一个桌面应用程序,并将H2作为我的数据库。问题是我试图运行JUnit以将数据保存在本地目录中,但每次运行JUnit时数据都会丢失。 我的文件; 我的测试用例; 打印列表的大小是1,但当我再次像这样运行测试用例时 它打印的列表大小为0

  • 问题内容: 我的问题是,我只想按年和月从属性中获取数据库表中的数据。我试过的代码是: 问题答案: 查询构建器中有可用的日期帮助器: