gpt4 book ai didi

java - org.hibernate.InstantiationException : No default constructor for entity: com. 域名.AnomalieAck

转载 作者:行者123 更新时间:2023-11-30 05:41:43 31 4
gpt4 key购买 nike

我试图将枚举值保存到数据库中,但触发了实例化异常,这是我的映射:

@Entity
public class Anomalie {

@Embedded
private AnomalieAck ack = AnomalieAck.NON_ACQUITTEE;



public Anomalie() {
}
/*getters and setters*/
}

//AnomalieAck.java

public enum AnomalieAck {

NON_ACQUITTEE(0),

ACQUITTEE_APP1 (1),

ACQUITTEE_APP2(2),

/** Aacquittee en erreur. */
ACQUITTEE_ERREUR(10),

@Column(name = "ANO_ACK")
private int ack = 0;

private AnomalieAck() {

}

private AnomalieAck(final int value) {
this.ack = value;
}
public int getValue() {
return this.ack;
}
public void setAck(int ack) {
this.ack = ack;
}
}

我没有使用@Enumerated(EnumType.STRING)@Enumerated(EnumType.ORDINAL)的原因是数据库中的字段ANO_ACK 被声明为数字,并且有许多其他资源使用该值作为数字。

我已经检查了所有内容:无参数构造函数已定义,setter 方法已实现。

我该怎么做才能让 Hibernate 实例化这个类?

最佳答案

不要嵌入枚举。

您需要的是一个自定义转换器:

转换器:

@Converter
public class AnomalieAckConverter implements AttributeConverter<AnomalieAck , Integer> {

@Override
public String convertToDatabaseColumn(AnomalieAck anomalieAck ) {
return anomalieAck.getValue();
}

@Override
public AnomalieAck convertToEntityAttribute(Integer ack) {
retrun AnomalieAck.getByValue(ack);
}

}

实体:

@Column
@Convert(converter = AnomalieAckConverter.class)
private AnomalieAck ack;

关于java - org.hibernate.InstantiationException : No default constructor for entity: com. 域名.AnomalieAck,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512295/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com