gpt4 book ai didi

java - 使用 java 在 JPA 中插入和获取时间查询作为 AM/PM

转载 作者:行者123 更新时间:2023-11-29 02:22:43 26 4
gpt4 key购买 nike

This is the question

SELECT TIME_FORMAT( `locStart`, '%h:%i %p' ) FROM locationtimes.

我如何使用 JPA 实现它

这些是我的数据库表条目

Database table

我的java实体类

package models;

package models;

import util.MyConverter;

import javax.persistence.*;
import java.sql.Time;
import java.sql.Timestamp;

/**
* Created by abhinav on 11/2/15.
*/

@Entity
@Table(name = "locationtimes")
//@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = Locationtimes.class)
public class Locationtimes {

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

@Column
public Long locationId;

@Column
public String weekday;

@Column(insertable = false, updatable = false)
@Temporal(TemporalType.TIME)
public Time locStart;

@Column(insertable = false, updatable = false)
public Time locEnd;

@Column(insertable = false, updatable = false)
public Time todayStart;

@Column(insertable = false, updatable = false)
public Time futureStart;

@Column(insertable = false, updatable = false)
public Time futureEnd;

//@Transient
@Column(name = "locStart")
@Convert(converter = MyConverter.class)
public String locStartString;

//@Transient
@Column(name = "locEnd")
@Convert(converter = MyConverter.class)
public String locEndString;

@Column(name = "todayStart")
@Convert(converter = MyConverter.class)
public String todayStartString;

//@Transient
@Column(name = "futureStart")
@Convert(converter = MyConverter.class)
public String futureStartString;

// @Transient
@Column(name = "futureEnd")
@Convert(converter = MyConverter.class)
public String futureEndString;

@Column
public Long modifiedBy;

@Column
public Timestamp modified;
}

最佳答案

我认为你的意思是你有时间的格式 -

14:21 --> 02:21 PM

您想在数据库中维护该格式吗?

java.sql.Time 对象将时间存储为 24 小时格式 HH24:MM,实际上是自纪元以来的秒数,作为它对 java.util.Date 的包装。这意味着添加 AM/PM 是通过 SimpleDateFormat 的表示问题 -

DateFormat dateFormat = new SimpleDateFormat("hh:mm a");

你可以这样做——

  • 使用 SDF 直接转换
  • NamedQuery - to_char(,'HH:MM')
  • 属性转换器

考虑 -

@Column
public Time locEnd;

如果我们将其转换为 HH:MM a 格式的字符串 -

@Column
@Convert(converter = DateStringConverter.class)
public String locEndString;

现在创建转换器类 -

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

@Converter
public class DateTimeConverter implements AttributeConverter {

private static final dateFormat = new SimpleDateFormat("hh:mm a");

@Override
public Time convertToDatabaseColumn(String datehhmma) {
return dateFormat.parse(datehhmma);
}

@Override
public String convertToEntityAttribute(String datehhmma) {
return dateFormat.parse(datehhmma);
}

}

关于java - 使用 java 在 JPA 中插入和获取时间查询作为 AM/PM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28713632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com