【发布时间】:2016-06-16 08:42:49
【问题描述】:
我使用 Hibernate 和 JPA
我有一些 POJO
public class Pojo {
@Temporal(TemporalType.DATE)
private Date date;
@Transient
private long dLong;
//other fields
//getters and setters
}
当我从数据库中获取对象Pojo 时,我想将date 转换为dLong。
当我有对象时我可以这样做
Pojo pojo = repository.findFirst();
Date date = pojo.getDate();
long l = date.getTime();
pojo.setDLong(l);
但是当我打电话给repository.findFirst() 时我想这样做
我尝试使用 getter 和 setter 但没有成功。
编辑 热门内容是示例。对不起,但我无法用例子解释我的问题。现在我显示我的原始代码:
@Entity
public class Medicament {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
@Transient
private long date;
@Temporal(TemporalType.DATE)
private Date dateExpiration;
//getters and setters
}
接下来我有服务
@Service
public class MedicamentService {
@Autowired
private MedicamentRepositoryEntityGraph medicamentRepositoryEntityGraph;
public Medicament findById(int id) {
return medicamentRepositoryEntityGraph.getOne("select m from Medicament m where m.id="+id, "user", "disease");
}
}
和存储库
@Repository
public class MedicamentRepositoryEntityGraph {
@Autowired
private EntityManager entityManager;
public Medicament getOne(String query, String...param) {
EntityGraph<Medicament> entityGraph = template(param);
Medicament medicament = entityManager.createQuery(query, Medicament.class)
.setHint("javax.persistence.loadgraph", entityGraph)
.getSingleResult();
return medicament;
}
private EntityGraph<Medicament> template(String... param) {
EntityGraph<Medicament> entityGraph = entityManager.createEntityGraph(Medicament.class);
entityGraph.addAttributeNodes(param);
Map<String, Object> hints = new HashMap<String, Object>();
hints.put("javax.persistence.fetchgraph", entityGraph);
return entityGraph;
}
}
我存储在数据库 dateExpiration 中,但是当我从数据库 'Medicament' 获取时,我想将 'dateExpiration' 转换为 long 'date',我使用来自服务 MedicamentService 的方法 findById
我尝试使用 getter 和 setter 但没有成功:
public void setDateExpiration(Date dateExpiration) {
this.dateExpiration = dateExpiration;
this.date = dateExpiration.getTime();
}
【问题讨论】:
-
你为什么不提供一个返回
date.getTime()的getter?什么是repository.findFirst()- 自定义实现?Pojo是实体还是通过 Hibernate 的构造函数语法创建的? -
我在主要问题中添加了一些信息。这是我在 stackoverflow 上的第一篇文章,我有疑问你收到我编辑我的问题的消息了吗?
-
不,如果您编辑问题,则不会收到通知。
-
顺便说一句,为什么你首先需要
date来返回long?使用 setter 失败的原因是什么? -
@Thomas 我在我的视图(spring mvc + jsp)中使用'long',我将日期从long转换为MONTH YYYY,另一方面我将带有JSON的对象发送到android rest客户端并从long转换到日期并存储在 android sqllite 数据库中。我以为我可以在 getter 或 setter 中转换日期,但我不能(它不工作) - long 仍然是 0。
标签: java hibernate jpa spring-data-jpa