JPA Validation error

Answered

I get this validation error on getUpdated of my JPA entity class:

This inspection checks for the following JPA specification errors:
- More than one attribute configured for method/field
- Attribute cannot be used in Embeddable object (JPA 1.0)
- Persistent attribute metadata should be specified on field or property getter
-For property-based access both setter and getter should be present

i have similar files which do not show that error. What is different here? Any idea?

package de.unit4.wirecard.tx.invoice.jpa;

import de.unit4.wirecard.tx.batch.FinancialDocument;
import de.unit4.wirecard.tx.error.TxStatusTransitionError;
import de.unit4.wirecard.tx.invoice.TXStatusValidator;
import org.apache.logging.log4j.ThreadContext;
import org.springframework.util.StringUtils;

import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name = "u4de_txbi_document")
public class TxDocument {
private Long txDocId;
private TXInvoiceStatus status;
private String u4FRequest;
private String u4FResponse;
private Date updated;
private String cmpcode;
private String doccode;
private String docnum;
private TxInvoiceDB invoice;
private FinancialDocument type;
private Long u4LogRef;

public TxDocument() {
this(null);
}

public TxDocument(TXInvoiceStatus status) {
this.status = status;
String starttime = ThreadContext.get("starttime");
if (StringUtils.hasText(starttime)) {
try {
Long value = Long.parseLong(starttime);
setU4LogRef(value);
} catch (Throwable ignore) {
}
}
}

public void setUpdated(java.sql.Date updated) {
this.updated = updated;
}

@Id
@Column(name = "tx_doc_id", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getTxDocId() {
return txDocId;
}

public void setTxDocId(Long txDocId) {
this.txDocId = txDocId;
}

@Basic
@Column(name = "status", nullable = false, length = 200)
@Enumerated(EnumType.STRING)
public TXInvoiceStatus getStatus() {
return status;
}

public void setStatus(TXInvoiceStatus status) {
if (!TXStatusValidator.isValidStatusTransition(getStatus(), status)) {
throw new TxStatusTransitionError(String.format("Invoice %s: status change from %s to %s is not allowed for document %s.",
this.invoice.getInvoiceNumber(), getStatus(), status, getType()), 6002);
}
this.status = status;

}

@Basic
@Column(name = "u4f_request", length = -1, nullable = true)
public String getU4FRequest() {
return u4FRequest;
}

public void setU4FRequest(String u4FRequest) {
this.u4FRequest = u4FRequest;
}

@Basic
@Column(name = "u4f_response", length = -1, nullable = true)
public String getU4FResponse() {
return u4FResponse;
}

public void setU4FResponse(String u4FResponse) {
this.u4FResponse = u4FResponse;
}

// @SuppressWarnings("JpaAttributeMemberSignatureInspection")
@Column(name = "updated", nullable = false)
@Version
public Date getUpdated() {
return this.updated;
}

public void setUpdated(Date updated) {
this.updated = updated;
}

@Basic
@Column(name = "cmpcode", length = 50, nullable = true)
public String getCmpcode() {
return cmpcode;
}

public void setCmpcode(String cmpcode) {
this.cmpcode = cmpcode;
}

@Basic
@Column(name = "doccode", length = 50, nullable = true)
public String getDoccode() {
return doccode;
}

public void setDoccode(String doccode) {
this.doccode = doccode;
}

@Basic
@Column(name = "docnum", length = 50, nullable = true)
public String getDocnum() {
return docnum;
}

public void setDocnum(String docnum) {
this.docnum = docnum;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

TxDocument that = (TxDocument) o;

if (txDocId != that.txDocId) return false;
if (status != null ? !status.equals(that.status) : that.status != null) return false;
if (u4FRequest != null ? !u4FRequest.equals(that.u4FRequest) : that.u4FRequest != null) return false;
if (u4FResponse != null ? !u4FResponse.equals(that.u4FResponse) : that.u4FResponse != null) return false;
if (updated != null ? !updated.equals(that.updated) : that.updated != null) return false;
if (cmpcode != null ? !cmpcode.equals(that.cmpcode) : that.cmpcode != null) return false;
if (doccode != null ? !doccode.equals(that.doccode) : that.doccode != null) return false;
if (docnum != null ? !docnum.equals(that.docnum) : that.docnum != null) return false;

return true;
}

@Override
public int hashCode() {
int result = (int) (txDocId ^ (txDocId >>> 32));
result = 31 * result + (status != null ? status.hashCode() : 0);
result = 31 * result + (u4FRequest != null ? u4FRequest.hashCode() : 0);
result = 31 * result + (u4FResponse != null ? u4FResponse.hashCode() : 0);
result = 31 * result + (updated != null ? updated.hashCode() : 0);
result = 31 * result + (cmpcode != null ? cmpcode.hashCode() : 0);
result = 31 * result + (doccode != null ? doccode.hashCode() : 0);
result = 31 * result + (docnum != null ? docnum.hashCode() : 0);
return result;
}

@ManyToOne
@JoinColumn(name = "tx_invoice_id", referencedColumnName = "tx_invoice_id", nullable = false)
public TxInvoiceDB getInvoice() {
return invoice;
}

public void setInvoice(TxInvoiceDB invoice) {
this.invoice = invoice;
}

@Basic
@Column(name = "type", nullable = false, length = 200)
@Enumerated(EnumType.STRING)
public FinancialDocument getType() {
return type;
}

public void setType(FinancialDocument type) {
this.type = type;
}

@Basic
@Column(name = "u4log_ref", nullable = true, precision = 0)
public Long getU4LogRef() {
return u4LogRef;
}

public void setU4LogRef(Long u4LogRef) {
this.u4LogRef = u4LogRef;
}

@Override
public String toString() {
final StringBuilder sb = new StringBuilder("TxDocument{");
sb.append("txDocId=").append(txDocId);
sb.append(", status=").append(status);
sb.append(", updated=").append(updated);
sb.append(", cmpcode='").append(cmpcode).append('\'');
sb.append(", doccode='").append(doccode).append('\'');
sb.append(", docnum='").append(docnum).append('\'');
sb.append(", type=").append(type);
sb.append(", u4LogRef=").append(u4LogRef);
sb.append('}');
return sb.toString();
}
}
0
1 comment

Please file a bug at https://youtrack.jetbrains.com/issues/IDEA with a reproducible test case.

0

Please sign in to leave a comment.