Company
可以有很多用户(例如[电子邮件保护]),
每个User
可以有许多应用程序(例如演示),
each
Application
将与它有1个相关的Emitter
这里是层次结构的树:
.
├── 001
│ ├── [email protected]
│ │ └── test
│ │ └── EmitterId (1234-5678)
│ └── [email protected]
│ ├── test
│ │ └── EmitterId (9876-5432)
│ └── demo
│ └── EmitterId (9876-9876)
└── 002
└── [email protected]
└── demo
└── EmitterId (1234-5678)
我的目标是能够通过提供3个数据来查询数据库以获取发射极ID:
用户(
[电子邮件保护]) +
Application(测试)
Map
Company
Map
:
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import java.util.Map;
@Entity
public class Company {
@Id
private String id;
@ElementCollection
private Map<String, User> users;
// getters / setters
}
User.java
:
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import java.util.Map;
@Entity
public class User {
@Id
private String id;
@ElementCollection
private Map<String, Application> applications;
@ManyToOne
private Company company;
// getters / setters
}
Application.java
:@Entity
public class Application {
@Id
private String id;
@ManyToOne
private User user;
private Emitter emitter;
// getters / setters
}
尚不清楚您要如何在数据库中表示此表示。您的一些评论表明用户有很多公司(不是很多),所以我怀疑您希望一个“应用程序”也有很多用户和公司:
Company | id |名称| | - | ---- | | 1 | 001 | | 2 | 002 |用户 | id |名称| | - | ---- | | 1 |
[电子邮件受保护]| | 2 |
[电子邮件受保护]
|申请 | id |名称| | - | ---- | | 1 |测试| | 2 |演示|Emitter | id | | - | | 1234-5678 | | 9876-5432 | | 9876-9876 |
要加入全部,您需要一个单独的表: emitter_ryations | emitter_id | user_id | company_id | app_id | | - | - | - | - | | 1234-5678 | 2 | 1 | 1 | | 9876-5432 | 1 | 1 | 1 | | 9876-9876 | 1 | 1 | 2 | | 1234-5678 | 1 | 2 | 2 |您可以像上面一样使用生成的ID,也可以使用用户,公司,应用程序名称字段作为ID,而不是在需要的情况下更容易。我更喜欢总体生成的ID,尽管使用名称的查询需要加入 - 因此取决于您。 使用名称为ID,我将其模拟为:
Emitter.java