java - org.hibernate.propertyvalueexception not-null 属性引用 null

标签 java netbeans jpa

我是 JPA 新手,在尝试保存事务数据时遇到了上述错误。

这是我的实体:

  @Entity
  @Table(name = "transaction1")
  @NamedQueries({
  @NamedQuery(name = "Transaction1.findAll", query = "SELECT t FROM Transaction1 t"),
  @NamedQuery(name = "Transaction1.findByTransactionID", query = "SELECT t FROM Transaction1 t WHERE t.transactionID = :transactionID"),
  @NamedQuery(name = "Transaction1.findByAmount", query = "SELECT t FROM Transaction1 t WHERE t.amount = :amount"),
  @NamedQuery(name = "Transaction1.findByFromAccNo", query = "SELECT t FROM Transaction1 t WHERE t.fromAccNo = :fromAccNo"),
  @NamedQuery(name = "Transaction1.findByFromSortCodeNo", query = "SELECT t FROM Transaction1 t WHERE t.fromSortCodeNo = :fromSortCodeNo"),
  @NamedQuery(name = "Transaction1.findByName", query = "SELECT t FROM Transaction1 t WHERE t.name = :name"),
  @NamedQuery(name = "Transaction1.findByToAccNo", query = "SELECT t FROM Transaction1 t WHERE t.toAccNo = :toAccNo"),
  @NamedQuery(name = "Transaction1.findByToSortCodeNo", query = "SELECT t FROM Transaction1 t WHERE t.toSortCodeNo = :toSortCodeNo"),
  @NamedQuery(name = "Transaction1.findByTransactionDate", query = "SELECT t FROM Transaction1 t WHERE t.transactionDate = :transactionDate")})
public class Transaction1 implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "Transaction_ID")
private Integer transactionID;
@Basic(optional = false)
@Column(name = "Amount")
private double amount;
@Basic(optional = false)
@Column(name = "From_Acc_No")
private int fromAccNo;
@Basic(optional = false)
@Column(name = "From_Sort_Code_No")
private String fromSortCodeNo;
@Basic(optional = false)
@Column(name = "Name")
private String name;
@Basic(optional = false)
@Column(name = "To_Acc_No")
private int toAccNo;
@Basic(optional = false)
@Column(name = "To_Sort_Code_No")
private String toSortCodeNo;
@Basic(optional = false)
@Column(name = "Transaction_Date")
@Temporal(TemporalType.TIMESTAMP)
private Date transactionDate;
static EntityManagerFactory emf = Persistence.createEntityManagerFactory("SWSXXPU");
public Transaction1() {
}

public Transaction1(Integer transactionID) {
    this.transactionID = transactionID;
}

public Transaction1(Integer transactionID, double amount, int fromAccNo, String fromSortCodeNo, String name, int toAccNo, String toSortCodeNo, Date transactionDate) {
    this.transactionID = transactionID;
    this.amount = amount;
    this.fromAccNo = fromAccNo;
    this.fromSortCodeNo = fromSortCodeNo;
    this.name = name;
    this.toAccNo = toAccNo;
    this.toSortCodeNo = toSortCodeNo;
    this.transactionDate = transactionDate;
}

public Integer getTransactionID() {
    return transactionID;
}

public void setTransactionID(Integer transactionID) {
    this.transactionID = transactionID;
}

public double getAmount() {
    return amount;
}

public void setAmount(double amount) {
    this.amount = amount;
}

public int getFromAccNo() {
    return fromAccNo;
}

public void setFromAccNo(int fromAccNo) {
    this.fromAccNo = fromAccNo;
}

public String getFromSortCodeNo() {
    return fromSortCodeNo;
}

public void setFromSortCodeNo(String fromSortCodeNo) {
    this.fromSortCodeNo = fromSortCodeNo;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getToAccNo() {
    return toAccNo;
}

public void setToAccNo(int toAccNo) {
    this.toAccNo = toAccNo;
}

public String getToSortCodeNo() {
    return toSortCodeNo;
}

public void setToSortCodeNo(String toSortCodeNo) {
    this.toSortCodeNo = toSortCodeNo;
}

public Date getTransactionDate() {
    return transactionDate;
}

public void setTransactionDate(Date transactionDate) {
    this.transactionDate = transactionDate;
}

@Override
public int hashCode() {
    int hash = 0;
    hash += (transactionID != null ? transactionID.hashCode() : 0);
    return hash;
}

@Override
public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Transaction1)) {
        return false;
    }
    Transaction1 other = (Transaction1) object;
    if ((this.transactionID == null && other.transactionID != null) || (this.transactionID != null && !this.transactionID.equals(other.transactionID))) {
        return false;
    }
    return true;
}

@Override
public String toString() {
    return "Entities.Transaction1[transactionID=" + transactionID + "]";
}

这是我的 servlet:

   try{

         Transaction1 t = new Transaction1();

         t.setFromAccNo(youraccinput);
         t.setFromSortCodeNo(yoursortcodeinput);
         t.setToAccNo(toaccinput);
         t.setToSortCodeNo(destsortcodeinput);
         t.setName(recname);
         t.setAmount(amtsender);

         EntityManager em;
         EntityManagerFactory emf;
         try {
              emf = Persistence.createEntityManagerFactory("SWSXXPU");
              em = emf.createEntityManager();
              em.getTransaction().begin();
              em.persist(t);
              em.getTransaction().commit();
              request.getRequestDispatcher("ListTransaction").forward(request, response);
         }
         catch(Throwable e){
              out.print(e.getMessage());
              out.print(e.getCause());
          }
         Accounts.debitSourceAccBalance(youraccinput, toaccinput, recname, amtsender);
         }
         catch(Throwable e){
             out.print(e.getMessage());
             out.print(e.getCause());
         }

完整错误消息:

org.hibernate.PropertyValueException: not-null property references a null or transient value: Entities.Transaction1.transactionDateorg.hibernate.PropertyValueException: not-null property references a null or transient value: Entities.Transaction1.transactionDate

我调试了它,似乎有一个 value 属性 not null is null,我似乎不理解这个错误消息。我认为我不需要保留 transactionID,因为它设置为自动增量,并且 transactionDate 设置为当前更新的时间戳。任何人都可以帮忙修复吗?

最佳答案

transactionDate 字段已用 @Basic(Optional = false) 标记。确保在持久化事务时该字段的值不为空。

如果 transactionData 可以真正为空(我猜不是),您可以从 @Basic 中删除 可选 选项。

关于java - org.hibernate.propertyvalueexception not-null 属性引用 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204658/

相关文章:

java - Hibernate sql语句中多对多语法错误

java - 使用rest进行 Elasticsearch 查询

java - Netbeans - Java 应用程序可以对 'Stop' 使用react吗?

java - 组织.hibernate.exception.SQLGrammarException : Table 'XXX' doesn't exist

java - '${spring.version}'的使用

java - Java 中的过程/工作流

PHP如何过滤 'in a correct way'所有$_POST变量

plugins - Netbeans 7.2 中的 glassfish v2

java - 没有使用 JPQL join fetch 的 Hibernate session

java - 如何使用 JPA Hibernate 从 PostgreSQL 检索时间戳值 "-infinity"