hibernate和继承-需要添加一个附加列(spring boot)

szqfcxe2  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(186)

我有一张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 InheritanceDiscriminator value 但在这种情况下,当我想找到所有 A 按用户id列出的对象我必须准备一个更大的选择,如: get all A objects from A where A.Message.Account.id = user_id or A.user_id = user_id .
这是个好办法吗?或者我应该用些不同的东西?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题