gpt4 book ai didi

java - Hibernate,扩展实体 - "java.lang.IllegalArgumentException: Unknown entity"

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:44 24 4
gpt4 key购买 nike

我有一个 Hibernate 实体 BaseEvent,它工作正常:

import javax.persistence.*;

@Entity
@Table(name = "base_event")
@SequenceGenerator(name = "seq", allocationSize = 1, sequenceName = "seq")
public class BaseEvent
{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
@Column(name = "id")
protected Long id = null;

@Column(name = "my_field", nullable = false)
protected String myField;

public Long getId()
{
return id;
}

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

public String getMyField()
{
return myField;
}

public void setMyField(final String myField)
{
this.myField = myField;
}
}

我想确定此对象何时更改并更新应用程序中的某些Map。我能想到的最简单的方法是扩展 BaseEvent 并覆盖 setter:

import java.text.MessageFormat;

public class ExtendedEvent extends BaseEvent
{
@Override
public void setMyField(final String myField)
{
System.out.println(MessageFormat.format("Setting myField to {0}", myField));
super.setMyField(myField);
}
}

这在我的应用程序中工作得很好,但是当我持久化该实体时,Hibernate 提示它不知道 ExtendedEvent 是什么。

java.lang.IllegalArgumentException: Unknown entity: my.package.ExtendedEvent

我可以看到,扩展 Hibernate 实体是一个不小的问题,尤其是当您开始添加字段时 - 但我想要的只是 Hibernate 将 ExtendedEvent 视为 BaseEvent (因为它就是)。有没有简单的解决方案?

最佳答案

创建基本事件@MappedSuperclass并扩展类@Entity

所以

@MappedSuperclass
public class BaseEvent

@Entity
@Table(whatever)
public class ExtendedEvent extends BaseEvent

关于java - Hibernate,扩展实体 - "java.lang.IllegalArgumentException: Unknown entity",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53895156/

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