我尝试使用Hibernate Envers记录实体历史。但失败了。
我的项目使用了Spring 3.1、JPA和Spring Data JPA(Hibenate 4.1)。
有一个基础类。
代码:
@javax.persistence.MappedSuperclass
public abstract class BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", columnDefinition = "INT unsigned", nullable = false)
@RevisionNumber
public Long id;
@Version
@Column(name = "jpaversion", nullable = false, columnDefinition = "INT unsigned")
@RevisionTimestamp
public Long version;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
BaseEntity other = (BaseEntity) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
当我将@RevisionEntity添加到我的entites中时。
代码:
@Entity
@RevisionEntity
@Table(name = "user", uniqueConstraints = {
@UniqueConstraint(name = "UQ_gsmPrefix_gsmNumber", columnNames = {"gsm_prefix", "gsm_number"}),
@UniqueConstraint(name = "UQ_email", columnNames = "email"),
@UniqueConstraint(name = "UQ_username", columnNames = "username")})
@NamedQueries({
@NamedQuery(name = "User.findByUsername", query = "select u from User u where u.username=:username"),
@NamedQuery(name = "User.findByEmail", query = "select u from User u where u.email=:email")})
@Access(AccessType.FIELD)
public class User extends BaseEntity implements UserDetails, Serializable {
代码:
@Entity @Table(名称=“地址”)@RevisionEntity公共类地址扩展
当我将项目部署到tomcat中时,我得到了这样的例外。
引用:
显然,我同时使用了@Entity和@RevisitonEntity,但它仍然会报告此信息。
我阅读了《Hibernate Dev Guide》中相关章节的文档,似乎在持久化中不需要额外的配置。xml或hibernate配置。我在Spring项目中遗漏了什么吗。
感谢任何帮助。
为什么需要使用@RevisionEntity
对实体进行注释?
@RevisionEntity
是表示修订本身的特殊用途实体。如果要让 Envers 审核您的实体,请使用@Audited
对其进行注释。
我想映射类主题到主题表。 主题。JAVA 主题。哈佛商学院。xml 冬眠cfg。xml 我正在读取csv文件的内容,并希望使用以下代码将其插入数据库。 管理ata.java 我得到以下错误 线程“main”组织中出现异常。冬眠MappingException:未知实体:组织中的主题。冬眠impl。SessionFactoryImpl。getEntityPersister(SessionFactor
问题内容: 特定实体存在映射例外。不能弄清楚问题出在哪里。我从头到尾检查了所有映射3次。我仍然收到映射异常。 发送给员工的电子邮件仅映射一次。但它仍然报告错误重复映射 错误是: 电子邮件Pojo email.hbm.xml 相关脚本 发送给员工的电子邮件仅映射一次。但它仍然报告错误重复映射 问题答案: 您是否将Employee中的集合设置为逆?
当我映射同一个实体时,就像这里回答的那样: Hibernate与同一实体的多对多关联 在“tbl_friends”表中,我有相同含义的行。例如,我有id=1的用户和id=2的用户。在“tbl_friends”表中,当他们作为朋友链接时,我有两行 使用Hibernate或JPA引用是否可以在一行(1-2或2-1)中建立这种关系?
我对这些技术是新的,所以提前道歉。 我在我的应用程序中使用了springboot、Spring JPA、hibernate和mapstruct。
我有两个不同的表,Person表和Employee表。我需要这两者之间的一一对应。Employee表的emp_id引用Person表的PERSON_ID。我需要一些帮助来编写使用注释的映射 persons.java
如何在Grails 3.0.1中映射带有注释的域类? 以下步骤对我不起作用。 步骤1.我使用Grails 3.0.1创建了一个新应用程序()。 步骤2。如Hibernate注释映射中所述,我在src/main/com/books/Book中创建了一个新类。groovy(也是groovy) 步骤3。然后通过将相关条目添加到grails-app/conf/Hibernate/Hibernate,向Hi