मुझे विरासत और @PrePersist एनोटेशन के साथ कुछ समस्याएं आ रही हैं।@ इकाई विरासत के साथ @PrePersist
एनोटेट updateDates साथ _The 'आधार' वर्ग() विधि:
@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Base implements Serializable{
...
@Id
@GeneratedValue
protected Long id;
...
@Column(nullable=false)
@Temporal(TemporalType.TIMESTAMP)
private Date creationDate;
@Column(nullable=false)
@Temporal(TemporalType.TIMESTAMP)
private Date lastModificationDate;
...
public Date getCreationDate() {
return creationDate;
}
public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}
public Date getLastModificationDate() {
return lastModificationDate;
}
public void setLastModificationDate(Date lastModificationDate) {
this.lastModificationDate = lastModificationDate;
}
...
@PrePersist
protected void updateDates() {
if (creationDate == null) {
creationDate = new Date();
}
lastModificationDate = new Date();
}
}
_ अब 'बाल' वर्ग कि सभी तरीकों के वारिस चाहिए "और एनोटेशन मेरे स्रोत कोड की तरह लग रहा है निम्नलिखित " आधार वर्ग से:
@javax.persistence.Entity
@NamedQueries({
@NamedQuery(name=Sensor.QUERY_FIND_ALL, query="SELECT s FROM Sensor s")
})
public class Sensor extends Entity {
...
// additional attributes
@Column(nullable=false)
protected String value;
...
// additional getters, setters
...
}
अगर मैं स्टोर/डेटाबेस के लिए आधार वर्ग के उदाहरण जारी रहती है, सब कुछ ठीक काम करता है। तिथियां अपडेट हो रही हैं। लेकिन अब, अगर मैं एक बच्चे के उदाहरण बनाए रखना चाहते, डेटाबेस निम्नलिखित अपवाद फेंकता है:
MySQLIntegrityConstraintViolationException: Column 'CREATIONDATE' cannot be null
तो, मेरी राय में, इस वजह से बच्चे में विधि के कारण होता है "@PrePersist संरक्षित शून्य updateDates()" डेटाबेस में उदाहरणों को जारी रखने से पहले बुलाया/बुलाया नहीं जाता है।
मेरे कोड में क्या गलत है?