Java 使用JPA+;循环引用
我有一个抽象类AbstractEntity,它包含两个字段:Java 使用JPA+;循环引用,java,eclipse,jpa,inherited,Java,Eclipse,Jpa,Inherited,我有一个抽象类AbstractEntity,它包含两个字段: lastEditTime(LocalDateTime) lastEditUser(用户实体) 代码如下: @MappedSuperclass public abstract class AbstractEntity { protected LocalDateTime lastEditTime; protected UserEntity lastEditUser; protected AbstractE
- lastEditTime(LocalDateTime)
- lastEditUser(用户实体)
@MappedSuperclass
public abstract class AbstractEntity {
protected LocalDateTime lastEditTime;
protected UserEntity lastEditUser;
protected AbstractEntity () { }
protected AbstractEntity (UserEntity creatorUser) {
lastEditTime = LocalDateTime.now();
lastEditUser = creatorUser;
}
public LocalDateTime getLastEditTime() {
return lastEditTime;
}
public void setLastEditTime(LocalDateTime lastEditTime) {
this.lastEditTime = lastEditTime;
}
public UserEntity getLastEditUser() {
return lastEditUser;
}
public void setLastEditUser(UserEntity lastEditUser) {
this.lastEditUser = lastEditUser;
}
}
然后是UserEntity类,它有许多不同的字段:
@Entity
@Table(name = "Users")
public class UserEntity extends AbstractEntity {
@Id
private String name;
private String password;
...
}
Eclipse显示以下错误消息:
在隐含关联覆盖“lastEditUser”中,无法在表“users”上解析联接列“lastEditUser\u name”
这是什么意思?我如何解决它
谢谢 我断开了eclipse数据源的连接。然后我清理项目(错误消息消失了),然后删除数据库中的表,最后运行测试用例重新创建表
新表有两个继承列。抽象映射的超类引用子类(在构造函数中)是不寻常的。这可能只是一个抽象类?我的意图是只有一个表(“用户”),其中包含一个列,该列的主键是用户的外键。该列必须允许空值。我如何用JPA来表示这一点?我的第一种方法是使用id而不是对象(字符串而不是UserEntity)。。但是文献上说我应该引用对象,而不是ID。我说的对吗?消息告诉您,users表中没有lastEditUser\u name列。这是应该包含上次编辑用户实体实例的用户的外键的列。如果我将“protected UserEntity lastEditUser;”更改为“protected String lastEditUser;”,则会收到相同的错误消息。因此,问题不在于循环引用.JB Nizet。我应该在表中手动创建列吗?我以为JPA会这么做。