【发布时间】:2014-07-02 05:18:52
【问题描述】:
好的,正在编辑问题。
我正在使用 spring、hibernate 和 JSP。
SQL 架构:
CREATE TABLE public.users
(
uuid VARCHAR(36) PRIMARY KEY NOT NULL,
username VARCHAR(45) UNIQUE NOT NULL,
first_name VARCHAR(255) NOT NULL,
last_name VARCHAR(255),
middle_name VARCHAR(255)
);
CREATE TABLE public.user_friends
(
uuid VARCHAR(36) PRIMARY KEY,
user_uuid VARCHAR(36) REFERENCES public.users (uuid) NOT NULL,
friend_uuid VARCHAR(36) REFERENCES public.users (uuid) NOT NULL,
friendAddDate TIMESTAMP NOT NULL,
friendTypeId INT NOT NULL,
CONSTRAINT friend_unique UNIQUE (user_uuid, friend_uuid)
);
Java 实体:
@Entity
@Table(name = "users")
public class User implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid", strategy = GenerationType.IDENTITY)
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name = "uuid", unique = true)
protected String uuid;
@Column(name = "username")
protected String username;
@JsonIgnore
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<UserFriend> userFriends = new HashSet<>();
}
@Entity
@Table(name = "user_friends")
@AssociationOverrides({
@AssociationOverride(name = "user",
joinColumns = @JoinColumn(name = "user_uuid")),
@AssociationOverride(name = "friendUser",
joinColumns = @JoinColumn(name = "friend_uuid")) })
public class UserFriend implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name = "uuid", unique = true)
protected String uuid;
@ManyToOne
@JoinColumn(name="user_uuid")
private User user;
@ManyToOne
@JoinColumn(name="friend_uuid")
private User friendUser;
@Column(name = "friendadddate")
protected Date friendAddDate;
@Column(name = "friendtypeid")
protected int friendTypeId;
}
现在我正在制作 JSP 页面,我将在其中显示系统的所有用户。所以我有两套: 设置 - 系统的所有用户 和 Set - 当前登录用户的好友。
我想在 JSP 上显示所有用户并标记为已登录用户的朋友的用户。 我想问:做这件事的最佳做法是什么?
【问题讨论】:
-
您需要有关数据库架构的帮助吗? ORM?数据结构?你的问题很混乱。
-
这是一个非常广泛的问题,基本上可以讨论,您需要重写它以显示您当前的代码,然后社区可以为您提供更好的修复/解决方案。