Java 如何在所有人的列表中显示用户朋友?
好的,编辑问题 我正在使用spring、hibernate和JSP SQL架构:Java 如何在所有人的列表中显示用户朋友?,java,spring,hibernate,jsp,Java,Spring,Hibernate,Jsp,好的,编辑问题 我正在使用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)
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;
}
@实体
@表(name=“users”)
公共类用户实现可序列化{
@身份证
@GeneratedValue(generator=“system uuid”,strategy=GenerationType.IDENTITY)
@GenericGenerator(name=“system uuid”,strategy=“uuid2”)
@列(name=“uuid”,unique=true)
受保护字符串uuid;
@列(name=“username”)
受保护的字符串用户名;
@杰索尼奥雷
@OneToMany(fetch=FetchType.LAZY,mappedBy=“user”,cascade=CascadeType.ALL,orphan=true)
private Set userFriends=new HashSet();
}
@实体
@表(name=“user\u friends”)
@联想超越({
@AssociationOverride(name=“user”,
joinColumns=@JoinColumn(name=“user_uuid”),
@AssociationOverride(name=“friendUser”,
joinColumns=@JoinColumn(name=“friend_uuid”))}
公共类UserFriend实现了可序列化{
@身份证
@GeneratedValue(generator=“系统uuid”)
@GenericGenerator(name=“system uuid”,strategy=“uuid2”)
@列(name=“uuid”,unique=true)
受保护字符串uuid;
@许多酮
@JoinColumn(name=“user\u uuid”)
私人用户;
@许多酮
@JoinColumn(name=“friend\u uuid”)
私人用户友好用户;
@列(name=“friendadddate”)
保护日期和添加日期;
@列(name=“friendtypeid”)
受保护的int-friendTypeId;
}
现在我正在制作JSP页面,在这里我将显示系统的所有用户。所以我有两套:
集合-系统的所有用户
和
Set-当前登录用户的好友
我想在JSP上显示所有用户,并标记登录用户的好友。
我想问:做这件事的最佳实践是什么?您需要在后端设置某种标志,该标志将在jsp页面中用于确定当前登录用户的好友。如果该标志存在,请标记用户,否则您将正常进行。是否需要有关数据库架构的帮助?ORM?数据结构?您的问题非常令人困惑。这是一个非常广泛的问题,基本上是可以讨论的,您需要重写它,以显示您的代码,说明您目前是如何做的,然后社区可以为您提供更好的修复/解决方案。某种标志,确实在哪里?在模型中?在数据库中?或者你建议我为页面创建新模型?在持久化的POJO(bean)中添加一个标志字段。在jsp页面上检查它。所以,您希望我在类用户和for循环中创建新字段isFriend,然后再将用户发送到jsp检查所有系统的每个用户都是登录用户的朋友吗?这就是你的解决方案?我可以在没有扩展字段的情况下在JSP上进行for循环,但我认为这对于高负载来说是一个糟糕的解决方案。您必须在某个地方这样做。或者如果你找到了其他解决方案,请在这里提及。我没有找到其他解决方案。。。仅循环周期