我可以提供帮助,我正在向实体添加属性,但我不知道如何将其与相应的表关联
部分代码
import javax.persistence.*;
import java.text.SimpleDateFormat;
import java.util.Date;
@Entity
public class TransactionByFop
extends BaseTransaction
{
@ManyToOne
private Transaction transaction;
private int reject;
//transbank context: TBK_ID_TRANSACCION; CAT context: IdCarro
private Long internalTransactionId;
//transbank context: TBK_TIPO_PAGO; CAT context: no es usado dejar en blanco
private String internalPaymentType;
//transbank context: TBK_NUMERO_CUOTAS; CAT context: NumeroCuotas
private Integer installmentsNumber;
//transbank context: no es usado dejar en blanco; CAT context: MontoCuota
private Double installmentsAmount;
//transbank context: TBK_FECHA_TRANSACCION; CAT context: FechaHoraAutorizacion
private Date authDate;
//transbank context: TBK_FINAL_NUMERO_TARJETA; CAT context: corresponde al número completo de la tarjeta si la transacción fué autorizada sin el password de seguridad, de lo contrario dejarlo en blanco.
private String creditCardNumber;
//transbank context: no es usado dejar en blanco; CAT context: Esta información no es explícita, pero puede ser deducida basada en alguna información
private Boolean catSecureKeyFlag;
//transbank context: no es usado dejar en blanco; CAT context: Viene basado en si el cliente está usando la clave de seguridad de lo contrario se deja en blanco
private String catCustomerRUT;
private String currency;
private Double discountedAmount;
public Transaction getTransaction()
{
return transaction;
}
public void setTransaction(Transaction transaction)
{
this.transaction = transaction;
}
public int getReject()
{
return reject;
}
public void setReject(int reject)
{
this.reject = reject;
}
public Long getInternalTransactionId()
{
return internalTransactionId;
}
public void setInternalTransactionId(Long internalTransactionId)
{
this.internalTransactionId = internalTransactionId;
}
public String getInternalPaymentType()
{
return internalPaymentType;
}
public void setInternalPaymentType(String internalPaymentType)
{
this.internalPaymentType = internalPaymentType;
}
public Double getDiscountedAmount() {
return discountedAmount;
}
public void setDiscountedAmount(Double discountedAmount) {
this.discountedAmount = discountedAmount;
}
public Integer getInstallmentsNumber()
{
return installmentsNumber;
}
public void setInstallmentsNumber(Integer installmentsNumber)
{
this.installmentsNumber = installmentsNumber;
}
public Double getInstallmentsAmount()
{
return installmentsAmount;
}
public void setInstallmentsAmount(Double installmentsAmount)
{
this.installmentsAmount = installmentsAmount;
}
public Date getAuthDate()
{
return authDate;
}
public void setAuthDate(Date authDate)
{
this.authDate = authDate;
}
public String getCreditCardNumber()
{
return creditCardNumber;
}
public void setCreditCardNumber(String creditCardNumber)
{
this.creditCardNumber = creditCardNumber;
}
public Boolean getCatSecureKeyFlag()
{
return catSecureKeyFlag;
}
public void setCatSecureKeyFlag(Boolean catSecureKeyFlag)
{
this.catSecureKeyFlag = catSecureKeyFlag;
}
public String getCatCustomerRUT()
{
return catCustomerRUT;
}
public void setCatCustomerRUT(String catCustomerRUT)
{
this.catCustomerRUT = catCustomerRUT;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String getAuthDateFormatted()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String stringDate = null;
if (null != this.authDate)
stringDate = sdf.format(this.authDate);
return stringDate;
}
public String getInstallmentsNumberFmt()
{
if (null == this.installmentsNumber || this.installmentsNumber == 0)
return "00";
String installments = this.installmentsNumber.toString();
if (installments.length() == 1)
return "0" + installments;
return installments;
}
public String getInstallmentsAmountFmt()
{
if (null != this.installmentsAmount)
return this.installmentsAmount.toString();
return "";
}
public String getCatSecureKeyFlagFmt()
{
if (null != catSecureKeyFlag)
return catSecureKeyFlag.toString();
return null;
}
@Override
public String toString()
{
return "[ id (" + id + ") : amount(" + amount +
") : id_fop(" + (fop == null
? ""
: fop.getId()) + ") : " +
") : last_update=(" + lastUpdate + ") : " +
") : settled(" + settled + ") : settled_amount(" + settledAmount +
") : id_status(" + (status == null
? ""
: status.getId()) + ")]";
}
}
两个新属性是货币和折扣金额
继承类
@MappedSuperclass
public abstract class BaseTransaction
extends DomainEntityId
{
private static final Logger logger = LoggerFactory.getLogger(BaseTransaction.class);
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
// ------------ Atributos de clase -------------
@Temporal(TemporalType.TIMESTAMP)
@Column(updatable = false)
protected Date created;
@Temporal(TemporalType.TIMESTAMP)
protected Date lastUpdate;
protected double amount;
protected boolean settled;
protected double settledAmount;
@ManyToOne
protected FOP fop;
@ManyToOne
protected TransactionStatus status;
protected String internalStatus;
@Column(length = 1024)
protected String internalDescription;
protected String authorizationCode;
// --------- metodos con logica de negocio ---------
//TODO: delete this method as it should use DAO for better use in unit test
public void setStatusRef(int status)
{
setStatus(JPA.em().getReference(TransactionStatus.class, status));
}
public boolean isAnyStatus(SupportedTransactionStatus... statuses)
{
if (status == null)
{
return false;
}
for (SupportedTransactionStatus s : statuses)
{
if (status.getId() == s.id())
{
return true;
}
}
return false;
}
public boolean isStatus(SupportedTransactionStatus status)
{
return this.status != null && this.status.getId() == status.id();
}
public void approvePayment()
{
if (!isStatus(Approved))
{
logger.warn(MessageFormat.format(
"Transaction [{0}] with FOP [{1}] was approved [{2}] with previous status [{3}]",
id, fop.getId(), Approved.name(), status.getId()));
}
setStatusRef(Approved.id());
}
public void rejectPayment()
{
if (!isStatus(Rejected))
{
logger.warn(MessageFormat.format(
"Transaction [{0}] with FOP [{1}] was rejected [{2}] with previous status [{3}]",
id, fop.getId(), Rejected.name(), status.getId()));
}
setStatusRef(Rejected.id());
}
public void forceRejectPayment()
{
if (!isStatus(ForcedRejection))
{
logger.warn(MessageFormat.format(
"Transaction [{0}] with FOP [{1}] was rejected [{2}] with previous status [{3}]",
id, fop.getId(), ForcedRejection.name(), status.getId()));
}
setStatusRef(ForcedRejection.id());
}
public boolean isClosed()
{
return isAnyStatus(Approved, Rejected);
}
// -------- hooks y triggers -----------------------
@PrePersist
public void prePersist()
{
created = new Date();
lastUpdate = created;
}
public void persist()
{
setStatusRef(NoFop.id());
JPA.em().persist(this);
}
public void merge()
{
setStatusRef(NoFop.id());
JPA.em().merge(this);
}
@PreUpdate
public void preUpdate()
{
lastUpdate = new Date();
}
//region getters and setters
public FOP getFop()
{
return fop;
}
public void setFop(FOP fop)
{
this.fop = fop;
}
public double getAmount()
{
return amount;
}
public String getAmountFmt()
{
return String.valueOf("$" + amount);
}
public void setAmount(double amount)
{
this.amount = amount;
}
public TransactionStatus getStatus()
{
return status;
}
public void setStatus(TransactionStatus status)
{
this.status = status;
}
public int getSettledInt()
{
return settled
? 1
: 0;
}
public boolean isSettled()
{
return settled;
}
public void setSettled(boolean settled)
{
this.settled = settled;
}
public double getSettledAmount()
{
return settledAmount;
}
public String getSettledAmountFmt()
{
return String.valueOf("$" + settledAmount);
}
public void setSettledAmount(double settledAmount)
{
this.settledAmount = settledAmount;
}
public String getInternalStatus()
{
return internalStatus;
}
public void setInternalStatus(String internalStatus)
{
this.internalStatus = internalStatus;
}
public String getInternalDescription()
{
return internalDescription;
}
public void setInternalDescription(String internalDescription)
{
this.internalDescription = internalDescription;
}
public String getAuthorizationCode()
{
return authorizationCode;
}
public void setAuthorizationCode(String authorizationCode)
{
this.authorizationCode = authorizationCode;
}
public String getCreatedFmt()
{
return DATE_FORMAT.format(created);
}
//endregion
}
最佳答案
使用@Table注释将实体与表映射。在此注释中,您必须给出表名称。并使用@Column注释为属性指定列名称。您必须为每个属性指定@Column,并在其中指定列名称。
import javax.persistence.*;
import java.text.SimpleDateFormat;
import java.util.Date;
@Entity
@Table(name = "table_name")
public class TransactionByFop
extends BaseTransaction
{
@ManyToOne
private Transaction transaction;
private int reject;
//transbank context: TBK_ID_TRANSACCION; CAT context: IdCarro
@Column(name = "column_name")
private Long internalTransactionId;
//transbank context: TBK_TIPO_PAGO; CAT context: no es usado dejar en blanco
@Column(name = "column_name")
private String internalPaymentType;
//transbank context: TBK_NUMERO_CUOTAS; CAT context: NumeroCuotas
@Column(name = "column_name")
private Integer installmentsNumber;
//transbank context: no es usado dejar en blanco; CAT context: MontoCuota
@Column(name = "column_name")
private Double installmentsAmount;
//transbank context: TBK_FECHA_TRANSACCION; CAT context: FechaHoraAutorizacion
@Column(name = "column_name")
private Date authDate;
//transbank context: TBK_FINAL_NUMERO_TARJETA; CAT context: corresponde al número completo de la tarjeta si la transacción fué autorizada sin el password de seguridad, de lo contrario dejarlo en blanco.
@Column(name = "column_name")
private String creditCardNumber;
//transbank context: no es usado dejar en blanco; CAT context: Esta información no es explícita, pero puede ser deducida basada en alguna información
@Column(name = "column_name")
private Boolean catSecureKeyFlag;
//transbank context: no es usado dejar en blanco; CAT context: Viene basado en si el cliente está usando la clave de seguridad de lo contrario se deja en blanco
private String catCustomerRUT;
private String currency;
private Double discountedAmount;
public Transaction getTransaction()
{
return transaction;
}
public void setTransaction(Transaction transaction)
{
this.transaction = transaction;
}
public int getReject()
{
return reject;
}
public void setReject(int reject)
{
this.reject = reject;
}
public Long getInternalTransactionId()
{
return internalTransactionId;
}
public void setInternalTransactionId(Long internalTransactionId)
{
this.internalTransactionId = internalTransactionId;
}
public String getInternalPaymentType()
{
return internalPaymentType;
}
public void setInternalPaymentType(String internalPaymentType)
{
this.internalPaymentType = internalPaymentType;
}
public Double getDiscountedAmount() {
return discountedAmount;
}
public void setDiscountedAmount(Double discountedAmount) {
this.discountedAmount = discountedAmount;
}
public Integer getInstallmentsNumber()
{
return installmentsNumber;
}
public void setInstallmentsNumber(Integer installmentsNumber)
{
this.installmentsNumber = installmentsNumber;
}
public Double getInstallmentsAmount()
{
return installmentsAmount;
}
public void setInstallmentsAmount(Double installmentsAmount)
{
this.installmentsAmount = installmentsAmount;
}
public Date getAuthDate()
{
return authDate;
}
public void setAuthDate(Date authDate)
{
this.authDate = authDate;
}
public String getCreditCardNumber()
{
return creditCardNumber;
}
public void setCreditCardNumber(String creditCardNumber)
{
this.creditCardNumber = creditCardNumber;
}
public Boolean getCatSecureKeyFlag()
{
return catSecureKeyFlag;
}
public void setCatSecureKeyFlag(Boolean catSecureKeyFlag)
{
this.catSecureKeyFlag = catSecureKeyFlag;
}
public String getCatCustomerRUT()
{
return catCustomerRUT;
}
public void setCatCustomerRUT(String catCustomerRUT)
{
this.catCustomerRUT = catCustomerRUT;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String getAuthDateFormatted()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String stringDate = null;
if (null != this.authDate)
stringDate = sdf.format(this.authDate);
return stringDate;
}
public String getInstallmentsNumberFmt()
{
if (null == this.installmentsNumber || this.installmentsNumber == 0)
return "00";
String installments = this.installmentsNumber.toString();
if (installments.length() == 1)
return "0" + installments;
return installments;
}
public String getInstallmentsAmountFmt()
{
if (null != this.installmentsAmount)
return this.installmentsAmount.toString();
return "";
}
public String getCatSecureKeyFlagFmt()
{
if (null != catSecureKeyFlag)
return catSecureKeyFlag.toString();
return null;
}
@Override
public String toString()
{
return "[ id (" + id + ") : amount(" + amount +
") : id_fop(" + (fop == null
? ""
: fop.getId()) + ") : " +
") : last_update=(" + lastUpdate + ") : " +
") : settled(" + settled + ") : settled_amount(" + settledAmount +
") : id_status(" + (status == null
? ""
: status.getId()) + ")]";
}
}
请引用hibernate annotations了解更多信息。
关于java - 如何在hibernate中映射java属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41600894/