我需要创建一些实体来备份我的应用程序,其中涉及用户之间的对话。现在,仅想象它具有与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
)