我有两门课:
@Entity
@Table(name = "user_role",uniqueConstraints = @UniqueConstraint(columnNames = {"role","username"}))
public class UserRole {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_role_id", unique = true, nullable = false)
private Integer userRoleId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "username", nullable = false)
private User user;
@Column(name = "role",nullable = false, length = 45)
private String role;
@Entity
@Table(name = "users")
public class User {
@Column(name = "firstname", nullable = false)
private String firstName;
@Column(name = "lastname", nullable = false)
private String lastName;
@Column(name = "surname", nullable = true)
private String surName;
@Id
@Column(name = "username", unique = true, nullable = false, length = 45)
private String username;
@Column(name = "password", nullable = false, length = 60)
private String password;
@Column(name = "email", nullable = false, length = 255)
private String email;
@Column(name = "enabled", nullable = false)
private boolean enabled;
@OneToMany(fetch = FetchType.LAZY)
private Set<UserRole> userRole = new HashSet<>(0);
@OneToMany(fetch = FetchType.LAZY)
private List<AddressBook> addressBooks = new ArrayList<>(0);
@OneToMany(fetch = FetchType.LAZY)
private List<Message> messages = new ArrayList<>(0);
当我用UserRole保存User时,出现了一个奇怪的错误:
2016-03-16 16:52:36.480 DEBUG 8280 --- [nio-8090-exec-9] org.hibernate.SQL : insert into users_user_role (users_username, user_role_user_role_id) values (?, ?)
2016-03-16 16:52:36.489 DEBUG 8280 --- [nio-8090-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper : could not execute statement [n/a]
org.postgresql.util.PSQLException: ERROR: column "user_role_user_role_id" of relation "users_user_role" does not exist
如果它创建了userrole_user_role_id,为什么要使用User_Role_ID?我该怎么修好它?
将user
中的userRole
映射更改为
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
private Set<UserRole> userRole = new HashSet<>(0);
mappedby
是Hibernate必须要知道这是双向关系的另一面。
我在一个实体上有一个简单的单向ManyToOne关系,不幸的是,这个关系是在一个我无法更改的模式中定义的。
@没有复合关系的多通关系可以正常工作: 这执行1SQL查询,仅从Telefoni表中获取一行,持续约10ms。 但是,当添加任何带有复合@JoinColumns的@manytone关系时,延迟抓取将停止工作: 这将执行37个SQL查询,急切地获取每个父实体和每个父实体的父实体,直到解决所有关系。这将持续大约600毫秒。 由于向我的实体添加了一个额外的关系,我的性能下降了60倍...除了更改我的数据
我是JPA新手,现在学习如何通过关系连接两个表。我得到的实体来自数据库。我有两张桌子,分别是Department和Employee。许多员工属于一个部门。 部门 雇员 多对一 错误
我想在(您可以将其视为Student)实体和实体之间实现一个@ManyTomany单向的。很简单,一个教室可以有很多学生,而学生可以有很多教室。我希望它是单向的,因为我希望班级只知道它包含什么学生,学生不必知道他们有什么班级。这就是我目前所拥有的: ClassRoom.java Account.java 我通过以下代码保存它(使用Spring JPA): 但我得到了以下错误: 下面是StackTr
我正在尝试在 /addNewUser 终结点上使用以下 POST 请求创建新用户:- 发布请求 UserController类:- 用户服务类:- 用户存储库界面 但我得到了以下例外:- 用户模型类 AuthoritiesModel类:- 最初,我认为我的post请求或Jackson API的反序列化存在一些问题,所以我打印了控制器方法中UserModel字段的值,并且所有值都设置正确,包括Aut
但是如果可能的话,我想避免这种情况,因为它迫使我定义n个构造函数,为我在投影中想要的n个字段组合定义n个构造函数。