【问题标题】:How show user friends in list of all people?如何在所有人的列表中显示用户好友?
【发布时间】: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?数据结构?你的问题很混乱。
  • 这是一个非常广泛的问题,基本上可以讨论,您需要重写它以显示您当前的代码,然后社区可以为您提供更好的修复/解决方案。

标签: java spring hibernate jsp


【解决方案1】:

您需要在后端设置某种标志,用于在您的 jsp 页面中确定当前登录用户的好友。如果存在标志,则标记用户,否则正常进行。

【讨论】:

  • 某种标志确实在哪里?在模型中?在数据库中?或者你建议我为页面创建新模型?
  • 在你坚持的 POJO(beans) 中添加一个标志字段。在 jsp 页面上检查它。
  • 所以,在将用户发送到 JSP 之前,您希望我在 User 类和 for 循环中创建新字段 isFriend 检查所有系统的每个用户是否是已登录用户的朋友?那是你的解决方案?我可以在没有扩展字段的情况下在 JSP 上创建这个 for 循环,但我认为这对于高负载来说是不好的解决方案。
  • 你必须在某个地方做。或者,如果您找到其他解决方案,请在此处提及。
  • 我没有找到其他解决方案...只有循环循环
猜你喜欢
  • 1970-01-01
  • 2020-10-16
  • 2012-04-10
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多