【问题标题】:Hibernate get data lach of columnHibernate获取列的数据滞后
【发布时间】:2019-09-16 08:01:56
【问题描述】:

我编写了一个从 Db 获取数据的函数,它占用了大部分数据,但仍然缺少一些列,即使我确实在实体中定义了它。 这是我调试时的结果

data is null

这是我的实体

@Entity
@Table(name="BANK_FEE_AND_LIMIT")
@NamedQuery(name="BankFeeAndLimit.findAll", query="SELECT b FROM 
BankFeeAndLimit b")
public class BankFeeAndLimit implements Serializable {
private static final long serialVersionUID = 1L;

@Id
private long id;

@Column(name="BANK_ID")
private Long bankId;

@Column(name="CASH_IN_FEE")
private Double cashInFee;

@Column(name="CASH_IN_FEE_AT_COUNTER")
private Double cashInFeeAtCounter;

@Column(name="CASH_IN_FEE_FROM_IB")
private Double cashInFeeFromIb;

@Column(name="CASH_IN_FEE_WITHOUT_LINK")
private Double cashInFeeWithoutLink;

@Column(name="CASH_OUT_FEE")
private Double cashOutFee;

@Column(name="CASH_OUT_FEE_WITHOUT_LINK")
private Double cashOutFeeWithoutLink;

@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DATE")
private Date createDate;

@Column(name="FEE_TYPE")
private Long feeType;

@Temporal(TemporalType.TIMESTAMP)
@Column(name="LAST_UPDATE")
private Date lastUpdate;

@Column(name="MAX_CASH_IN_PER_DAY")
private Long maxCashInPerDay;

@Column(name="MAX_CASH_IN_PER_TRANS")
private Long maxCashInPerTrans;

@Column(name="MAX_CASH_OUT_PER_DAY")
private Long maxCashOutPerDay;

@Column(name="MAX_CASH_OUT_PER_TRANS")
private Long maxCashOutPerTrans;

@Column(name="MAX_NUMBER_CASH_IN")
private Long maxNumberCashIn;

@Column(name="MAX_NUMBER_CASH_OUT")
private Long maxNumberCashOut;

@Column(name="MIN_CASH_IN_FEE_AT_COUNTER")
private Long minCashInFeeAtCounter;

@Column(name="MIN_CASH_IN_FEE_FROM_IB")
private Long minCashInFeeFromIb;

@Column(name="MIN_CASH_IN_FEE_VALUE")
private Long minCashInFeeValue;

@Column(name="MIN_CASH_IN_FEE_WITHOUT_LINK")
private Long minCashInFeeWithoutLink;

@Column(name="MIN_CASH_IN_PER_TRANS")
private Long minCashInPerTrans;

@Column(name="MIN_CASH_OUT_FEE_VALUE")
private Long minCashOutFeeValue;

@Column(name="MIN_CASH_OUT_FEE_WITHOUT_LINK")
private Long minCashOutFeeWithoutLink;

@Column(name="MIN_CASH_OUT_PER_TRANS")
private Long minCashOutPerTrans;

@Column(name="STATUS")
private Long status;

@Column(name="WALLET_LEVEL")
private Long walletLevel;

@Column(name="WALLET_TYPE")
private Long walletType;

@Column(name="NUMBER_IBFT_FREE_BY_MONTH")
private Long numberIbftFreeByMonth;

@Column(name="NUMBER_CASH_OUT_FREE_BY_MONTH")
private Long numberCashOutFreeByMonth;

@Column(name="MAX_NUMBER_TRANSFER_IBFT")
private Long maxNumberTransferIbft;

@Column(name="MIN_IBFT_FEE_VALUE")
private Long minIbftFeeValue;

@Column(name="MIN_CASH_IN_FEE_FOR_PREPAID")
private Long minCashInFeeForPrepaid;

@Column(name="EXTRA_TRANSFER_IBFT_FEE")
private Long extraTransferIbftFee;

@Column(name="TRANSFER_IBFT_FEE")
private Long transferIbftFee;

@Column(name="CASH_IN_FEE_FOR_PREPAID")
private Long cashInFeeForPrepaid;

@Column(name="MIN_TRANSFER_IBFT_PER_TRANS")
private Long minTransferIbftPerTrans;

@Column(name="MAX_TRANSFER_IBFT_PER_TRANS")
private Long maxTransferIbftPerTrans;

@Column(name="MAX_CASH_IN_PREPAID_PER_TRANS")
private Long maxCashInPrepaidPerTrans;

@Column(name="MAX_TRANSFER_IBFT_PER_DAY")
private Long maxTransferIbftPerDay;

@Column(name="MAX_CASH_IN_PREPAID_PER_DAY")
private Long maxCashInPrepaidPerDay;

@Column(name="MAX_NUMBER_CASH_IN_PREPAID")
private Double test;

public Double getTest() {
    return test;
}

public void setTest(Double test) {
    this.test = test;
}

null 字段是映射到数据库中 MAX_NUMBER_CASH_IN_PREPAID 列的测试字段。 这是数据库中的数据

data in database

其他字段仍然可以正常获取,只有这个字段无法获取。

【问题讨论】:

  • 您可能在数据库中遇到Double testthe type of the column 之间的转换问题。
  • 您能分享一下表架构吗?您在 DB 中为“MAX_NUMBER_CASH_IN_PREPAID”使用了什么数据类型
  • MAX_NUMBER_CASH_IN_PREPAID 列的数据类型为 NUMBER,我使用的是 oracle
  • 我认为这与你的问题stackoverflow.com/questions/10028028/…有关。
  • 试试@Column(name="MAX_NUMBER_CASH_IN_PREPAID",precision=0)..参考:stackoverflow.com/questions/10028028/…

标签: java sql hibernate entity hibernate-mapping


【解决方案1】:

我认为你需要为你拥有的列生成保姆和吸气剂,然后有一个构造函数来从 java 类或控制器(spring、servlet ..)中设置变量

【讨论】:

    【解决方案2】:

    地图存在比例问题。试试

    @Column(name="MAX_NUMBER_CASH_IN_PREPAID", precision=0)
    private Double test;
    

    参考:JPA mapping a Java Double to a SQL Number column

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 1970-01-01
      • 2021-07-06
      • 2017-02-08
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多