Ich habe die folgende einfache Einheit:JPA Entity mit nicht @Column Anmerkung
package net.plus.msodb.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(schema="msodb", name="mso")
public class Mso implements Serializable {
@Id
private Integer incidentReference;
private String detectedDate;
private String detectedTime;
private String startDate;
private String startTime;
private String anticipatedClearDate;
private String anticipatedClearTime;
private String actualClearDate;
private String actualClearTime;
private String headline;
private String progress;
private String details;
private String servicesType;
private String servicesCount;
public Mso() {
}
@Column(name="detectedDate")
public String getDetectedDate() {
if(detectedDate == "") {
return null;
}
return detectedDate + " " + detectedTime;
}
/*
* Getters & Setters removed to save space
*/
@Column(name="detectedDate")
public void setDetectedDate(String detectedDate) {
this.detectedDate = detectedDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public void setAnticipatedClearDate(String anticipatedClearDate) {
this.anticipatedClearDate = anticipatedClearDate;
}
public void setActualClearDate(String actualClearDate) {
this.actualClearDate = actualClearDate;
}
}
und das ist Smooks die Config Ich verwende:
<?xml version="1.0" encoding="UTF-8"?><smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.2.xsd">
<params>
<param name="stream.filter.type">SAX</param>
<param name="inputType">input.xml</param>
<param name="input.xml" type="input.type.actived">Workspace://MSODBActions/src/test/resources/msos.xml</param>
</params>
<jb:bean beanId="Mso" class="net.plus.msodb.model.Mso" createOnElement="/msos/mso">
<jb:value data="/msos/mso/@actualClearDate" property="actualClearDate"/>
<jb:value data="/msos/mso/@actualClearTime" property="actualClearTime"/>
<jb:value data="/msos/mso/@anticipatedClearDate" property="anticipatedClearDate"/>
<jb:value data="/msos/mso/@anticipatedClearTime" property="anticipatedClearTime"/>
<jb:value data="/msos/mso/@details" property="details"/>
<jb:value data="/msos/mso/@detectedDate" property="detectedDate"/>
<jb:value data="/msos/mso/@detectedTime" property="detectedTime"/>
<jb:value data="/msos/mso/@headline" property="headline"/>
<jb:value data="/msos/mso/@incidentReference" decoder="Integer" property="incidentReference"/>
<jb:value data="/msos/mso/@progress" property="progress"/>
<jb:value data="/msos/mso/@servicesCount" property="servicesCount"/>
<jb:value data="/msos/mso/@servicesType" property="servicesType"/>
<jb:value data="/msos/mso/@startDate" property="startDate"/>
<jb:value data="/msos/mso/@startTime" property="startTime"/>
</jb:bean>
</smooks-resource-list>
Wenn ich versuche, und an das Unternehmen speichern, ich erhalte die folgende Fehlermeldung:
Data truncation: Incorrect datetime value: '' for column 'detectedDate' at row 1
Sie aus dem Getter für detectedDate sehen, dass, wenn die detectedDate ist eine leere Zeichenfolge (die Wenn dieses Attribut in der Quell-XML für die Smooks-Umwandlung fehlt, sollte der Getter null zurückgeben.
Debuggen dieser Teil des Codes gibt es tatsächlich Null zurück.
Es ist fast wie der Getter wird nicht verwendet, um den Wert für detectedDate zu erhalten. Wenn es wäre, wäre es entweder null oder zumindest eine einzelne Raumzeichenfolge.