Hibernate 引发异常,表示实体不存在标识符
是否应该遵循这种设计模式?我从dto包中的域(这是一个包含所有实体类的不同项目)引入Country和Lang,我映射这些表。Hibernate 引发异常,表示实体不存在标识符,hibernate,jpa,Hibernate,Jpa,是否应该遵循这种设计模式?我从dto包中的域(这是一个包含所有实体类的不同项目)引入Country和Lang,我映射这些表。 谢谢您没有@IdNo…我应该将对象设为EmbeddedId而不是embedded吗?任何类都不应该同时具有@Entity和@embedded。如果类存储为嵌入式(仅),则它没有自己的表(@table),也没有@Id,也没有@Entity。任何JPA参考都可以解释这一点 @Entity @Table(name = "COUNTRY") @Embeddabl
谢谢您没有@IdNo…我应该将对象设为EmbeddedId而不是embedded吗?任何类都不应该同时具有
@Entity
和@embedded
。如果类存储为嵌入式(仅),则它没有自己的表(@table
),也没有@Id
,也没有@Entity
。任何JPA参考都可以解释这一点
@Entity
@Table(name = "COUNTRY")
@Embeddable
public class Country implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "CTRY_ID_NBR", nullable = false)
private Integer countryIdNumber;
@Column(name = "CTRY_CD_NM", nullable = false)
private String countryCodeName;
@Column(name = "CTRY_NM")
private String countryName;
@Column(name = "CTRY_CUR_SUFFIX_NM")
private String countryCurrencySuffixName;
@Column(name = "CTRY_CUR_CD_NM")
private String countryCurrencyCodeName;
}
@Entity
@Table(name = "LANG")
@Embeddable
public class Lang implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "LANG_ID_NBR")
private Integer langIdNumber;
@Column(name = "CTRY_ID_NBR", insertable = false, updatable = false)
private Integer countryIdNumber;
@Column(name = "LANG_CD_NM")
private String langCodeName;
@Column(name = "LANG_NM")
private String langName;}
@Entity
public class LangDto {
@Embedded
@AttributeOverrides({ @AttributeOverride(name = "countryIdNumber", column = @Column(name = "CTRY_ID_NBR")),
@AttributeOverride(name = "langCodeName", column = @Column(name = "LANG_CD_NM")),
@AttributeOverride(name = "langName", column = @Column(name = "LANG_NM")) })
private Lang lang;
@ManyToOne
@JoinColumn(name = "CTRY_ID_NBR", nullable = false)
private CountryDto countryDto;
}
@Entity
public class CountryDto {
@Embedded
@AttributeOverrides({ @AttributeOverride(name = "countryIdNumber", column = @Column(name = "CTRY_ID_NBR")),
@AttributeOverride(name = "countryCodeName", column = @Column(name = "CTRY_CD_NM")),
@AttributeOverride(name = "countryName", column = @Column(name = "CTRY_NM")),
@AttributeOverride(name = "countryCurrencySuffixName", column = @Column(name = "CTRY_CUR_SUFFIX_NM")),
@AttributeOverride(name = "countryCurrencyCodeName", column = @Column(name = "CTRY_CUR_CD_NM")) })
private Country country;
@OneToMany(mappedBy = "countryDto", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<LangDto> lang;
org.hibernate.AnnotationException: No identifier specified for entity: com.fedex.ftt.nexgen.dto.LangDto