This is the question
或者

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

我怎么能用JPA来实现
这些是我的数据库表条目
我的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
你想在数据库中保持这种格式吗?
Time对象将时间存储为24小时格式HH24:MM,实际上是从epoch开始的秒数,作为java.util.Date的包装。这意味着AM/PM的添加是一个通过SimpleDateFormat的演示问题-

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

你可以这样做-
使用SDF直接转换
NamedQuery-到字符(,'HH:MM')
属性转换程序
考虑-
@Column
public Time locEnd;

如果我们将其转换为HH:MM a格式的字符串-
@Column
 @Convert(converter = DateStringConverter.class)
public String locEndString;

现在创建converter类-
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);
 }

}

10-07 19:34
查看更多