我有表A:
@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
与柱子)。所以我必须在表中存储新对象,但有空列但有附加列-> ->目前这是查找所有对象的参数()问题是如何/在哪里存储列中不同的对象(空,与消息表)。Message
Message
A
A
Message
user_id
A
ARepository.findByMessage_Account_Id(user.getId())
A
Message
我考虑过Single Table Inheritance
,Discriminator value
但在这种情况下,当我想A
通过 user_id 查找所有对象时,我必须准备一个更大的选择,例如:get all A objects from A where A.Message.Account.id = user_id or A.user_id = user_id
。
这是一个好方法吗?或者也许我应该使用不同的东西?