Hibernate 中的 idclass mapping 问题
Posted 河图书卦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate 中的 idclass mapping 问题相关的知识,希望对你有一定的参考价值。
关于出现 idclass mapping 运行错误
@IdClass
注释通常用于定义包含复合键id的Class。即多个属性的关键复合。
@IdClass(CountrylanguageEntityPK.class) 则CountrylanguageEntityPK如下所示:
package org.entity;
import javax.persistence.Column;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Objects;
public class CountrylanguageEntityPK implements Serializable {
private String countryCode;
private String language;
@Column(name = "CountryCode", nullable = false, length = 3)
@Id
public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
@Column(name = "Language", nullable = false, length = 30)
@Id
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CountrylanguageEntityPK that = (CountrylanguageEntityPK) o;
return Objects.equals(countryCode, that.countryCode) &&
Objects.equals(language, that.language);
}
@Override
public int hashCode() {
return Objects.hash(countryCode, language);
}
}
使用注解 @IdClass 的Entity类通常
应该具有以下属性:
- 实现Serializable
- 一个构造函数,它接受id(即与之关联的字段
@Id
) - 重写
equals
和hashCode
如果出现 idclass mapping 运行错误即可从以上三个三个方面查看问题原因所在,注:使用注解形式的同时如果编译器反向生成Entity.hbm.xml 的同时 hibernate.cfg.xml会被添加这些hbm.xml 的 mapping resource 项
则也会出现 idclass mapping 的错误。
(<property name="connection.url">jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC</property>)这项中想把useSSL=false&serverTimezone=UTC&verifyServerCertifate=false都添加进去怎么写?有知道的老铁请评论告知,在此感谢。
以上是关于Hibernate 中的 idclass mapping 问题的主要内容,如果未能解决你的问题,请参考以下文章
Tapestry 5.3.8 + Jetty + Hibernate 4.3.5 + XAMPP 1.8.3 - IdClass 使用(派生)实体,为啥在尝试合并时它们会分离?
使用 @IdClass 的 JPA 多对多与额外列在 springTestContextPreparation Hibernate AnnotationException“没有持久的 id 属性”中失