对未知实体的引用:java.lang.Integer

时间:2019-04-21 14:55:23

标签: java spring spring-data

我有一个简单的def dropdowngrid(self, ...): self.menu.grid(...) self.pack()

@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; } User类在单独的程序包中,并且两者都是程序包范围的。表示我不能简单地写

Task

这就是为什么我得到

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

是否有解决方法来实现我所需要的?在单独的程序包中并在程序包范围内的2个实体之间创建关系?

1 个答案:

答案 0 :(得分:0)

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

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

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