如何创建Spring Data实体以促进消息传递应用程序?

时间:2019-07-11 17:47:45

标签: java postgresql spring-boot kotlin spring-data-jpa

我需要创建一些实体来备份我的应用程序,其中涉及用户之间的对话。现在,仅想象它具有与Tinder类似的功能。将会有用户,这些用户可以与其他用户进行对话。对话绝不会超过2个用户。

我试图创建一个User,Conversation和Message实体。用户将只存储基本用户信息。对话将跟踪2位参与者,并且消息实体将保留实际消息和时间戳。我想使用此时间戳,以便在渲染用户的打开对话时,我可以根据对话和发送的最新消息对它们进行排序。也许我想在“对话”实体中使用时间戳记?

我目前遇到编译问题,但是我还是不喜欢我的方法。我将不胜感激任何帮助。谢谢!如果有人认为有更好的方法来解决这种实体问题,我也愿意完全改变这种方法。

用户实体:

@Entity
@Table(name = "users")
data class User (

@Id
var id: UUID = UUID.randomUUID(),

@Column(nullable = false)
var firstName: String,

@Column(nullable = false)
var lastName: String,

@Column(nullable = false, unique = true)
var username: String,

@Column(nullable = false)
var password: String,

@Transient 
var confirmPassword: String,

@Column(nullable = false)
var zipCode: String,

@Column(nullable=true)
var bio: String?,

@Column(nullable=true)
var imageUrl: String //path to profile picture url
)

会话实体:

@Entity
data class Conversation (

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(nullable = false)
    val convoId: Long,

    @OneToMany
    @JoinColumn(name = "user_id")
    var particapants: List<User>,

    @OneToMany
    @JoinColumn(name = "message_id")
    var messages: List<Message>
)

消息实体:

@Entity
data class Message (

        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE)
        @Column(nullable = false)
        val messageId: Long,

        @ManyToOne
        @JoinColumn(name = "user_id")
        val user: User,

        var message: String,

        @LastModifiedDate
        @Column(name = "last_modified_date")
        var lastModifiedDate: Date
)

0 个答案:

没有答案