JPA,hibernate find()方法返回null

时间:2018-07-13 17:46:10

标签: hibernate jpa ejb wildfly jta

使用Hibernate,JPA,Wildfly 11和EJB,JTA。我的数据库是Mysql,并通过@PersistenceContext注入entityManager。

我试图从数据库中检索一条记录,但该记录存在于db中,并且在我的实体中其类型为Long而在db中为BigInt(20)。

entityManager.find(peristenceClass.class, 1L) 

返回空值,而与相同的查询:

entityManager.createQuery(select a from Entity a where a.id = 1).getResultList() 

返回实体。

使用createQuery(...)方法检索它之后,find()方法也将其返回!

这是我的实体类定义:

@Entity
@Table(name = "answersheet")
public class AnswerSheet implements DomainEntity {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "date", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date date;

    @Column(name = "name")
    private String name;

    @Column(name = "national_code")
    private String nationalCode;

    @Column(name = "mobile")
    private String mobile;

    @Column(name = "client_ip", nullable = false)
    private String clientIp;

    @Column(name = "satisfaction")
    private Integer satisfaction;

    @JoinColumn(name = "questionnaire", referencedColumnName = "id", nullable = false)
    @ManyToOne
    private Questionnaire questionnaire;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public String getName() {
        return name;
    }

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

    public String getNationalCode() {
        return nationalCode;
    }

    public void setNationalCode(String nationalCode) {
        this.nationalCode = nationalCode;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getClientIp() {
        return clientIp;
    }

    public void setClientIp(String clientIp) {
        this.clientIp = clientIp;
    }

    public Integer getSatisfaction() {
        return satisfaction;
    }

    public void setSatisfaction(Integer satisfaction) {
        this.satisfaction = satisfaction;
    }

    public Questionnaire getQuestionnaire() {
        return questionnaire;
    }

    public void setQuestionnaire(Questionnaire questionnaire) {
        this.questionnaire = questionnaire;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof AnswerSheet)) return false;

        AnswerSheet that = (AnswerSheet) o;

        return getId() != null ? getId().equals(that.getId()) : that.getId() == null;

    }

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

    @Override
    public String toString() {
        return "AnswerSheet{" +
                "id=" + id +
                '}';
    }

0 个答案:

没有答案