gpt4 book ai didi

java - 引用未知实体 : java. lang.Integer

转载 作者:行者123 更新时间:2023-12-02 06:26:26 24 4
gpt4 key购买 nike

我有简单的@Entity

@Entity
@Table(name = "user")
@Getter
class User {
@Id
@GeneratedValue
private final Integer userID;
private final String username;
}

还有一个,应该保存外键

@Getter
@Builder
@Entity
class Task {
@Id
@GeneratedValue
private final Integer taskID;

private final String title;
private final String details;

@ManyToOne(cascade = CascadeType.PERSIST)
@JoinTable(name = "user", joinColumns = {@JoinColumn(name = "userID")})
private final Integer userID;
}

要点是 - UserTask 类位于不同的包中,并且都属于包范围。意味着我不能简单地写

@ManyToOne(cascade = CascadeType.PERSIST)
@JoinTable(name = "user", joinColumns = {@JoinColumn(name = "userID")})
private final User user;

这就是我得到的原因

@OneToOne or @ManyToOne on com.johndoe.teamplanner.task.domain.Task.userID references an unknown entity: java.lang.Integer

有没有解决方法来实现我的需要?在独立包中且具有包范围的两个实体之间创建关系吗?

最佳答案

您可以尝试以下替代方案:

  • 显而易见的一个:将 User 类的访问器更改为 public。但是,如果您问这个问题,可能是因为您没有源代码而无法更改它。
  • 反编译User .class 文件以获得源代码。如果用户不是那么复杂,你可能可以尝试这个。然后,将访问器更改为public
  • 生成您自己的 User 类版本,并使用您的版本来实现持久性,使用另一个版本来实现它提供的功能。
  • Task 类中的 userID 映射为 Integer,并通过代码确保您永远不会分配无效 userID 的值:@Column私有(private)整数用户ID;。如果您使用 JPA 生成表,那么您需要在数据库中手动添加外键以确保数据的完整性。

我希望其中一些解决方案能够有所帮助。

关于java - 引用未知实体 : java. lang.Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55783816/

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