如何在Hibernate中为用户建模相同实体的列表?(会话、会话历史记录)

polhcujo  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(113)

我正在用ORM制作一个Spring Boot应用程序。
我有一个用户,它有一个当前会话。因此,用@Entity对这两个进行建模非常有效。
我们有表用户和会话。所以用户是一个实体,会话是一个实体。除了由@OnetoOneMap的当前会话字段之外。我们希望用户拥有一个SessionHistory类。我们希望它本质上就是它所说的那样。它拥有所有以前的历史。
这就引出了我的问题。我觉得我不需要在ERD里做这个模型?所以我不能就这么把它放在里面。通常,它是一个选择具有该用户ID的所有会话的查询。我该如何将其转换成Java代码呢?

@Entity
@Table(name = "users")
@Getter
@Setter
public class User {

   @Setter(AccessLevel.NONE)
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "user_id", nullable = false)
   private Long id;

  ...

   @Transient
   private SessionHistory sessionHistory;
   
   public User(...) {
      ...
      // this.sessionHistory = new SessionHistory();
   }

   public User() {

   }
}

我不知道该试什么。因为我认为有一张table不是一个好主意(这对我来说是没有意义的)。
我确实想到了什么,但与我的团队讨论后说这将是一个问题。但我建议与SessionRepository有关,因为它是我们进入数据库的门户,但如果我没有弄错的话,这违反了体系结构。使用服务或存储库以这种方式示例化该属性。

jmo0nnb3

jmo0nnb31#

答案是创建一个PostLoadEventListener并检查我的实体类型。这样,我就可以进行查询并设置用户加载的会话列表。
它有点老了,所以一定要研究一下新的做事方式

相关问题