Я использую Hibernate и JPAУстановить поле, когда Hibernate получить объект из базы данных
У меня есть некоторый POJO
public class Pojo {
@Temporal(TemporalType.DATE)
private Date date;
@Transient
private long dLong;
//other fields
//getters and setters
}
Я хочу, чтобы преобразовать date
в dLong
, когда я получаю объект Pojo
из базы данных. я могу это сделать, когда у меня есть объект
Pojo pojo = repository.findFirst();
Date date = pojo.getDate();
long l = date.getTime();
pojo.setDLong(l);
, но я хочу сделать это, когда я называю repository.findFirst()
я пытался использовать геттер и сеттер, но безуспешно.
Редактировать Главное содержание - пример. Извините, но я не могу объяснить свою проблему на примере. Теперь я показать свой Orignal код:
@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
, но когда я получаю из базы данных I 'Medicament' хотите конвертировать 'dateExpiration' в длинную 'дату', когда я использую метод findById
от службы MedicamentService
Я пытался использовать геттер и сеттер, но безуспешно:
public void setDateExpiration(Date dateExpiration) {
this.dateExpiration = dateExpiration;
this.date = dateExpiration.getTime();
}
Почему бы вам просто не предоставить getter, который возвращает 'date.getTime()'? Что такое 'repository.findFirst()' - пользовательская реализация? И является ли «Pojo» сущностью или создан с помощью синтаксиса конструктора Hibernate? – Thomas
Я добавил некоторую информацию к основному вопросу. Это мои первые сообщения о stackoverflow и у меня вопрос, вы получили сообщение, что я отредактировал мой вопрос? –
Нет, нет уведомления, если вы отредактируете свой вопрос. – Thomas