我有一张table:
@Entity
@Table(name = "A")
public class A{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false, updatable = false)
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "message_id")
private Message;
}
我有一个表消息:
@Entity
@Table(name="message")
@Getter
@Setter
public class Message{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(nullable = false, updatable = false)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "account_id", foreignKey = @ForeignKey(name = "FK_account_to_message"))
private Account account; //and then search by Account.id
}
在我的服务中,我通过以下方式获得所有a对象:
List<A> aObjects = ARepository.findByMessage_Account_Id(user.getId())
所以我想得到所有 A
具有这种特性的物体 Message
字段 Message
田野里有这样的植物 Account
字段 Account.id == user.getId()
现在我有另外一种 A
实体-与 Message
因为现在可以通过上传excel文件(从文件中读取数据并保存到数据库中)来创建对象,所以在本例中我们没有 Message
可以添加的数据 Message
列)。所以我必须储存新的 A
中的对象 A
表,但列为空 Message
但有附加列-> user_id
->当前,这是查找所有 A
对象( ARepository.findByMessage_Account_Id(user.getId())
)问题是如何/在哪里储存 A
不同的对象 Message
列(空,与消息表没有关系)。
我想到了 Single Table Inheritance
与 Discriminator value
但在这种情况下,当我想找到所有 A
按用户id列出的对象我必须准备一个更大的选择,如: get all A objects from A where A.Message.Account.id = user_id or A.user_id = user_id
.
这是个好办法吗?或者我应该用些不同的东西?
暂无答案!
目前还没有任何答案,快来回答吧!