В одном из моих классов спящего режима у меня есть переменная Timestamp. Теперь все было в порядке, когда я использовал только спящий режим на сервере. Но теперь я реализую webservice с wsgen.JAVA hibernate/webservice - проблема с отметкой времени
Я получаю сообщение об ошибке, потому что Timestamp не имеет конструктора по умолчанию no-args.
Сообщение;
Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.sql.Timestamp does not have a no-arg default constructor.
Класс:
package com.PTS42.planner;
import java.io.Serializable;
import java.sql.Timestamp;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
@WebService
@Entity @Table(name="Reserveringen")
public class Reservering implements Serializable {
@Id @GenericGenerator(name = "generator", strategy = "increment")
@GeneratedValue(generator = "generator")
private int id;
private Timestamp vanaf;
private Timestamp tot;
@ManyToOne
@Embedded
private Klant klant;
@ManyToOne
@Embedded
private Machine machine;
public int getId() {
return id;
}
public void setId(@WebParam(name="reservering_id")int id) {
this.id = id;
}
public Klant getKlant() {
return klant;
}
public void setKlant(@WebParam(name="reservering_klant")Klant klant) {
this.klant = klant;
}
public Timestamp getTot() {
return tot;
}
public void setTot(@WebParam(name="reservering_tot")Timestamp tot) {
int tempint = tot.getMonth();
tot.setMonth(tempint-1);
this.tot = tot;
}
public Timestamp getVanaf() {
return vanaf;
}
public void setVanaf(@WebParam(name="reservering_vanaf")Timestamp vanaf) {
int tempint = vanaf.getMonth();
vanaf.setMonth(tempint-1);
this.vanaf = vanaf;
}
public Machine getMachine() {
return machine;
}
public void setMachine(@WebParam(name="reservering_machine")Machine machine) {
this.machine = machine;
}
public Reservering() {
}
public Reservering(@WebParam(name="reservering_constructor_vanaf") Timestamp vanaf, @WebParam(name="reservering_constructor_tot")Timestamp tot, @WebParam(name="reservering_constructor_klant")Klant klant, @WebParam(name="reservering_constructor_machine")Machine machine)
{
this.vanaf = vanaf;
this.tot = tot;
this.klant = klant;
this.machine = machine;
}
}
Кто знает, как решить эту проблему, не используя другой вид переменной затем Timestamp.
ли ваша потребность класса Hibernate иметь переменную Timestamp? Временная метка - это оболочка, специфичная для SQL, вокруг java.util.Date. Если вам не нужны наносекунды, то вам, вероятно, не нужна отметка времени, и вы можете просто использовать Date напрямую. Как правило, считается неправильной формой для выявления типов, специфичных для SQL, за пределами уровня базы данных, но я не уверен, что изменение класса Hibernate действительно для этого назначения. – Jeff
Когда я использую дату в моем спящем объекте. И поместив его в базу данных, время datetime в базе данных mysql не занимает времени (часы и минуты) с ним. – Julian
Используете ли вы аннотации Hibernate для отображения сущности? Если это так, вы можете настроить точность в БД с помощью аннотации @Temporal (TemporalType.TIMESTAMP) – Jeff