我必须在设计糟糕的旧数据库中应用JPA。不幸的是无法更改它。幸运的是,仅用于只读访问。
我发现的最奇怪的事情之一是没有联接(或中间)表的“多对多”关系。这是表结构的简化:
USER ACCESS
---- ------
ID int primary key ID int primary key
NAME varchar2(20) NAME varchar2(20)
ACCESS_GROUP int ACCESS_GROUP int
必须按照这种方式“概念上”将此表与Java类映射:
public class User {
private Integer id;
private String name;
@ManyToMany private List<Access> accessList;
}
public class Access {
private Integer id;
private String name;
@ManyToMany private List<User> userList;
}
但是我认为这是不可能的。您认为在JPA中访问此表并浏览它们的最佳方法是什么?
您可以尝试将其映射为两个只读的一对多关系:
public class User {
@Column(name = "ACCESS_GROUP")
private Integer group;
@OneToMany
@JoinColumn(name = "ACCESS_GROUP", referencedColumnName = "ACCESS_GROUP",
insertable = false, updateable = false)
private List<Access> accessList;
...
}
public class Access {
@Column(name = "ACCESS_GROUP")
private Integer group;
@OneToMany
@JoinColumn(name = "ACCESS_GROUP", referencedColumnName = "ACCESS_GROUP",
insertable = false, updateable = false)
private List<User> userList;
...
}
问题内容: 我必须在设计糟糕的旧数据库中应用JPA。不幸的是无法更改它。幸运的是,仅用于只读访问。 我发现的最奇怪的事情之一是没有联接(或中间)表的“多对多”关系。这是表结构的简化: ACCESS_GROUP列可以在两个表中重复 一位用户可以与N个访问相关 一个访问可以与N个用户相关 必须按照这种方式“概念上”将此表与Java类映射: 但是我认为这是不可能的。您认为在JPA中访问此表并进行浏览的最
是否可以在没有数据库连接的情况下运行我的测试?如果是,我做错了什么/错过了什么?
我有这些实体: 用户 角色 权限 一个用户有很多角色,一个角色有很多权限。 null
我知道spring-retry不会抓取数据库连接。 我们已经用@Retryable包装了一个RESTendpoint,试图实施重试功能,但它并没有像预期的那样工作。我已经预料到,当由于而引发SQLExc,下一次尝试将从池中获取新连接。我面临一个问题,如果我们在处理过程中关闭MySQL数据库,sping-retry会重试方法调用,但不会获得新的数据库连接。结果,所有重试都失败,但对RESTendpo
问题内容: 我正在使用Hibernate 3.3.1,并正在对该示例表结构进行建模,但是在创建具有额外属性的联接表时遇到了麻烦。 是和表之间的多对多关系。联接表就是该表。我遵循这里提到的方法。 现在我有了实体 和 和 和 我使用Apache Derby进行测试,但是在生成的表结构上遇到了麻烦。 看来它已经创建了我所有的列作为主键。为什么会这样呢? 问题答案: 您可以使用实体的类作为IdClass的