举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > jpa自动生成时间 JPA 日期映射到时间戳示例

jpa自动生成时间 JPA 日期映射到时间戳示例

2023-06-18 13:18 Java教程

jpa自动生成时间 JPA 日期映射到时间戳示例

jpa自动生成时间

JPA(Java Persistence API)是一种用于持久化Java对象的标准技术,它可以帮助开发人员将Java对象存储在关系数据库中。JPA提供了一种方便的方法来自动生成时间,这样开发人员就不必手动创建时间字段。

JPA使用@Temporal注释来标识实体中的时间字段。@Temporal注释有三个参数:TemporalType.DATE、TemporalType.TIME和TemporalType.TIMESTAMP。如果要在实体中创建一个日期字段,则可以使用@Temporal(TemporalType.DATE)注释来标识该字段。如果要在实体中创建一个时间戳字段,则可以使用@Temporal(TemporalType.TIMESTAMP)注释来标识该字段。

@Entity 
public class MyEntity { 

    @Id 
    @GeneratedValue 
    private Long id; 

    @Temporal(TemporalType.TIMESTAMP) 
    private Date createdAt; 

    // getters and setters omitted for brevity 
} 

上面的代码片段显示了如何使用@Temporal注释来标识一个实体中的时间戳字段。当JPA将实体保存到数据库时,它会自动将当前时间写入createdAt字段中。同样,当从数据库中加载实体时,JPA也会自动将createdAt字段的值写入实体中。

JPA 日期映射到时间戳示例

JPA教程 - JPA日期映射到时间戳示例


我们可以使用以下代码将Java Date类型值映射到TIMESTAMP类型数据库表列。

@Temporal(TemporalType.TIMESTAMP)
private java.util.Date dob;

例子

下面的代码来自Person.java。

package cn..common;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Person {
  @Id
  private long id;
   
  private String name;
  
  @Temporal(TemporalType.TIMESTAMP)
  private java.util.Date dob;
  
  public Person() {}

  public Person(String name) {
    this.name = name;
  }

  public java.util.Date getDob() {
    return dob;
  }

  public void setDob(java.util.Date dob) {
    this.dob = dob;
  }

  public Long getId() {
    return id;
  }
  public void setId(Long id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }

  public String toString() {
    return "nnID:" + id + "nName:" + name + "nn"+"Dob"+dob;
  }
}

下面的代码来自PersonDaoImpl.java。

package cn..common;


import java.util.Calendar;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.transaction.annotation.Transactional;

@Transactional
public class PersonDaoImpl {
  public void test(){
    Person p1 = new Person("Tom");
    p1.setId(1L);
    p1.setDob(Calendar.getInstance().getTime());
    Person p2 = new Person("Jack");
    p2.setId(2L);
    
    save(p1);
    save(p2);

    listAll();
    
  }
  private void listAll(){
    List<Person> persons = getAll();
    for (Person person : persons) {
      System.out.println(person);
    }

  }
  @PersistenceContext
  private EntityManager em;
  
  
  public Long save(Person person) {
    em.persist(person);
    return person.getId();
  }
  
  public List<Person>getAll() {
    return em.createQuery("SELECT p FROM Person p", Person.class).getResultList();
  }
  
}

以下代码来自App.java。

package cn..common;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

  public static void main(String[] args) {
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
        "applicationContext.xml");
    PersonDaoImpl dao = (PersonDaoImpl) context.getBean("personDao");

    dao.test();

    context.close();
    
    Helper.checkData();
  }
}
下载 Map_Java_Date_to_DB_Timestamp.zip

上面的代码生成以下结果。

以下是数据库表转储。

Table Name: PERSON
 Row:
    Column Name: ID,
    Column Type: BIGINT:
    Column Value: 1

    Column Name: DOB,
    Column Type: TIMESTAMP:
    Column Value: 2014-12-29 13:59:45.461

    Column Name: NAME,
    Column Type: VARCHAR:
    Column Value: Tom

 Row:
    Column Name: ID,
    Column Type: BIGINT:
    Column Value: 2

    Column Name: DOB,
    Column Type: TIMESTAMP:
    Column Value: null

    Column Name: NAME,
    Column Type: VARCHAR:
    Column Value: Jack


阅读全文
以上是编程学为你收集整理的jpa自动生成时间 JPA 日期映射到时间戳示例全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部