【发布时间】:2017-10-03 18:53:06
【问题描述】:
我有这个实体:
@Entity
@Table( name = "conference" )
public class Conf implements Serializable {
@Column( name = "start_date" )
private DateTime startDate;
@Column( name = "complete_date", unique = false, updatable = true )
private DateTime completeDate;
@Column( name = "is_complet", length = 1, updatable = true, columnDefinition = "TINYINT(1)" )
private Boolean isComplete;
public void setIsComplete( Boolean isComplete ) {
System.out.println( "date is null ?" + this.completeDate == null ); //for verification
this.isComplete = isComplete;
this.completeDate = (this.isComplet == true && completeDate == null) ? new DateTime() : null; // null value is never assigned beccause by default completeDate seems to not be null
this.startDate = this.completeDate != null ? new DateTime() : new DateTime( this.completeDate.getYear(), 1 + this.completeDate.getMonthOfYear(),
this.completeDate.getDayOfMonth(),
this.completeDate.getHourOfDay(),
this.completeDate.getMinuteOfHour() ); // this throws NPE
}
问题出在上面的setter方法中。事实上,即使isComplete = true,completeDate 也永远不会为空,当我这样检查时:System.out.println( "date is null ?" + this.completeDate == null ); 结果false。但是当我从completeDate调用任何方法时,我得到了一个NullPointerException。奇怪的是,当我查看我的表 conference 时,complete_date 列为空。
即使我给它分配了一个空值:completeDate=null; 它也没有任何改变。
有什么问题?我哪里错了?我怎么能解决这个问题?非常感谢
【问题讨论】:
标签: hibernate datetime nullpointerexception spring-data jodatime