我正在开发一个商城系统,用户可以在其中拥有一个或多个商店。如果您创建一个商店,您将为该商店扮演ADMIN角色,否则:您创建一个帐户,然后该商店的ADMIN将您分配给一个商店作为经理。用户可以拥有一个他们是管理员的商店,但也可以成为该商店所有者分配给您的不同商店的经理。因此,我提出了三个实体:用户、角色和商店。
用户实体
@Entity
@Table(name = "us_users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank
private String uuid;
@Email
private String us_email;
//other fields
//getters/setters
}
角色实体。
@Entity
@Table(name = "ro_roles")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String rn_role_name;
//setter getter
}
商店实体。
@Entity
@Table(name = "sh_shops")
public class Shop {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@NotBlank(message = "Shop name can not be left blank")
private String sh_name;
@NotBlank(message = "please provide shop icon")
private String sh_icon;
@NotBlank(message = "please fill the shop description")
private String sh_description;
//other fields.. getters and setters
}
我需要这三个实体之间的关系:类似于一个包含userId、shopId和RoleId的表,用户可以在其中
请协助如何建模此用例。谢谢
首先,你真的需要角色的灵活性吗?也许拥有一个简单枚举的角色就足够了,至少如果您不打算在运行时创建新角色的话。这将简化数据模型。
其次,这听起来像是用户实体的映射关系:
@Entity
@Table(name = "us_users")
public class User {
@ManyToMany
@MapKeyJoinColumn(name = "shop_id")
@JoinTable(name = "user_shop_role",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Map<Shop, Role> shopRoles = new HashMap<>();
}
在这里,您使用user_shop_role
表创建一个三向关系,该表包含字段user_id
、shop_id
和role_id
,这意味着您期望的。
然后,为用户添加一个商店角色只需将一个关键价值关系添加到此地图:
user.getShopRoles().put(shop, role);
显示店铺列表只需遍历地图条目,并显示具有相应角色(值)的店铺(键)。
由于您使用Shop
作为键,因此需要确保Shop
实体正确实现equals
和hashCode
方法(基于其id
)。
null 这似乎意味着我不像使用简单的“From customer”查询那样获取customer实体的实例。如果是这种情况,如何返回客户实体?如果没有,那我做错了什么?
样本子句 sample_clause允许您指示数据库从表中的随机数据样本中进行选择,而不是从整个表中进行选择。 我想使用QueryDSL运行下面的查询 样本子句 sample_clause允许您指示数据库从表中的随机数据样本中进行选择,而不是从整个表中进行选择。 从测试t样本(80)中选择,其中t.test_id=01,t.test _ suite _ id = 02 其中条件是动态的,我使用qu
我在做一个费用追踪系统,但出了点问题。 我在数据库中有3个表。 表1(项目) 表2(类别) 表3(费用) tblProjects与tblCategory的关系为1:1,tblExpenses与tblProjects的关系也为1:1。 现在,我正在尝试得到每个类别的总和。例如,我想知道旅行、运动等的总花费是多少。 我尝试使用下面的查询,但它返回给我错误的数据
我有一个密码查询,它应该返回节点和边,这样我就可以在web应用程序中呈现我的图形的表示。我使用Neo4joOperations中的方法运行它。 之前,我使用的是spring数据neo4j 3.3。1使用嵌入式数据库,此查询在返回具有开始节点和结束节点的关系代理方面做得很好。我已经升级到SpringDataNeo4J4.0。0并切换到使用远程服务器,现在它返回的LinkedHashMaps非常空。
问题内容: 我非常热衷于在CSS中使用媒体查询,但是我对如何使用它感到困惑。我有立场 我的查询要求是 如果屏幕宽度是100到480,那么会出现不同的样式, 如果屏幕宽度从481到600,那么会出现不同的样式, 如果屏幕宽度为601到800,那么会出现不同的样式, 如果屏幕宽度为801,则默认CSS应该有效。 问题答案: