gpt4 book ai didi

java - JPA transient 注释

转载 作者:行者123 更新时间:2023-12-02 13:10:05 25 4
gpt4 key购买 nike

我正在学习SpringHibernate

我已阅读以下内容和其他教程资源。我的理解是 @Transient 将阻止对象字段序列化并阻止其持久化到数据库。

Transient variable in java

Transient annotation

JPA Transient annotation and JSON

我的问题是,如果您不想将某个对象的字段保留到数据库中,但希望在从服务器获取数据时检索该字段,该怎么办?

例如,在您的 MySqlcreateDate 设置为 CURRENT_TIMESTAMP,因此当插入数据时,TIMESTAMP 是创建了我的 MySql。

MySql 的设置是这样的

ALTER TABLE `books` 
ADD COLUMN `dateCreated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP AFTER `dateCreated`;

我的 Controller 是

@RequestMapping(path="/booklist", method = RequestMethod.GET, produces="application/json")
@ResponseBody
public Map<String, Object> getListBooks(@RequestParam(name="search", required=false) String search,
@RequestParam(name="ordering", required=false) String ordering){


Map<String, Object> data = new HashMap<String, Object>();

// Get list of books from server
List<Book> books = bookDao.getBookList(search, ordering);

System.out.println(books.get(0));

// do other things and return map
}

我的返回数据是

书籍 [id=1,name=Murach Jquery,第二版,ispn=978-1890774912,price=4.24,dateCreated=null,datePublished=null]

我的 Book 对象如下

@Entity
@Table(name="books")
@Component
public class Book implements Serializable{

private static final long serialVersionUID = -2042607611480064259L;

@Id
@GeneratedValue
private int id;

@NotBlank
private String name;

@NotBlank
@Size(min=2, max=16)
private String ispn;

@DecimalMin(value = "0.1")
private double price;

@Transient
private Timestamp dateCreated;

private Date datePublished;

// getter and setters

}

谢谢。

最佳答案

@Transient 不会对您的情况有帮助。

使用@PrePersist在实体类中的方法上。

@PrePersist
public void beforePersist() {
this.dateCreated = new Date();
}
使用 @PrePersist 注释的

beforePersist() 方法将帮助您在想要持久保存新实体之前自动初始化实体字段。对于您的情况,您可以在此方法中初始化日期属性。您不必每次保留实体时都手动设置它。

现在,当您从数据库中获取实体时,您将获得日期属性。

另请参阅@PreUpdate这可以帮助您在更新实体时更新实体字段。

关于java - JPA transient 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43993802/

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