Jboss JPA实体未使用@Column注释

Jboss JPA实体未使用@Column注释,jboss,esb,Jboss,Esb,我有以下简单实体: 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(schem

我有以下简单实体:

   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;
 }

    }
这是我正在使用的配置:

<?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>
您可以从detectedDate的getter中看到,如果detectedDate是空字符串(如果Smooks转换的源XML中缺少该属性,则为空),那么getter应该返回null

调试这部分代码时,它确实返回null


这几乎就像getter没有被用来获取detectedDate的值一样。如果是,则它将是null,或者至少是一个空格字符串。

在回答我自己的问题时,问题在于您只能对成员定义或方法进行注释,但不能同时对两者进行注释。注意,我已经注释了@Id member变量,并将其他注释放在方法上

将@Id注释移动到该字段的getter以解决问题

Data truncation: Incorrect datetime value: '' for column 'detectedDate' at row 1