Java 可嵌入密钥上的一元映射
我正在尝试为用户(存储在表Java 可嵌入密钥上的一元映射,java,jpa,jpql,Java,Jpa,Jpql,我正在尝试为用户(存储在表用户中)访问项目(存储在表选项卡中)建立权限规则。是否查看某些内容的可用性存储在权限选项卡中 结果应与语句运行时一样(对于id=2的用户): 我试图通过@OneToMany注释执行此操作,但失败-我收到消息: 部署失败。消息是:异常描述:异常 @从 实体类[类] com.jtsmr.scheduler.persistence.entities.UsersEntity]不完整。 当源实体类使用复合主键时 @必须使用 @连接列。name和referencedColumnNa
用户
中)访问项目(存储在表选项卡
中)建立权限规则。是否查看某些内容的可用性存储在权限选项卡中
结果应与语句运行时一样(对于id=2的用户):
我试图通过@OneToMany
注释执行此操作,但失败-我收到消息:
部署失败。消息是:异常描述:异常
@从
实体类[类]
com.jtsmr.scheduler.persistence.entities.UsersEntity]不完整。
当源实体类使用复合主键时
@必须使用
@连接列。name和referencedColumnName元素都必须
在每一列中指定
在修改数据库和添加权限选项卡
之前,一切都正常。当我添加它时,我无法编写正确的@OneToMany
注释,也无法成功地找到我的案例手册
如果不可能,通过JPQL的解决方案就足够了(我无法构造连接操作)
以下是我的设置:
DB(易于理解的创建语句):
JPA映射如下(省略函数):
选项卡:
用户:
@Entity
@Table(name = "users")
public class UsersEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private Long userId;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
@OneToMany
@JoinTable(
name = "permissions_tabs",
joinColumns
= {
@JoinColumn(name = "user_id", referencedColumnName = "user_id")},
inverseJoinColumns
= {
@JoinColumn(name = "tab_id", referencedColumnName = "tab_id")})
private List<PermissionsTabsEntity> allowedTabs;
}
以及许可证:
@Entity
@Table(name = "permissions_tabs")
public class PermissionsTabsEntity implements Serializable {
@EmbeddedId
private PermissionsTabsPK id;
@Column(name = "to_view")
private boolean toView;
@Column(name = "to_edit")
private boolean toEdit;
}
提前谢谢你
@Entity
@Table(name = "tab")
public class TabEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "tab_id", insertable = false, updatable = false)
private Long tabId;
@Column(name = "parent", insertable = false, updatable = false)
private Long parent;
@Column(name = "name", insertable = false, updatable = false)
private String name;
}
@Entity
@Table(name = "users")
public class UsersEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private Long userId;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
@OneToMany
@JoinTable(
name = "permissions_tabs",
joinColumns
= {
@JoinColumn(name = "user_id", referencedColumnName = "user_id")},
inverseJoinColumns
= {
@JoinColumn(name = "tab_id", referencedColumnName = "tab_id")})
private List<PermissionsTabsEntity> allowedTabs;
}
@Embeddable
public class PermissionsTabsPK implements Serializable {
@Column(name = "user_id")
private Long userId;
@Column(name = "tab_id")
private Long tabId;
}
@Entity
@Table(name = "permissions_tabs")
public class PermissionsTabsEntity implements Serializable {
@EmbeddedId
private PermissionsTabsPK id;
@Column(name = "to_view")
private boolean toView;
@Column(name = "to_edit")
private boolean toEdit;
}