映射Java持久化中的其他字段
我使用Spring boot应用程序,该应用程序中有以下实体:映射Java持久化中的其他字段,java,mysql,jpa,spring-data-jpa,Java,Mysql,Jpa,Spring Data Jpa,我使用Spring boot应用程序,该应用程序中有以下实体: @Entity public class IpAddress { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "IP_ADDR_ID") private Long id; @Column(name = "IP_ADDRESS") @NotEmpty private String
@Entity
public class IpAddress {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "IP_ADDR_ID")
private Long id;
@Column(name = "IP_ADDRESS")
@NotEmpty
private String address;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "IP_ADDR_STATUS",
joinColumns = {
@JoinColumn(name = "IP_ADDRESS_ID", referencedColumnName = "IP_ADDR_ID")
},
inverseJoinColumns = {
@JoinColumn(name = "STATUS_ID", referencedColumnName = "S_ID")
})
private List<HttpInfoMessage> httpInfoMessages = new ArrayList<>();
public IpAddress() {
}
public IpAddress(String address) {
this.address = address;
}
public IpAddress(String address, List<HttpInfoMessage> httpInfoMessages) {
this.address = address;
this.httpInfoMessages = httpInfoMessages;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public List<HttpInfoMessage> getHttpInfoMessages() {
return httpInfoMessages;
}
public void setHttpInfoMessages(List<HttpInfoMessage> httpInfoMessages) {
this.httpInfoMessages = httpInfoMessages;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof IpAddress)) return false;
IpAddress ipAddress = (IpAddress) o;
if (!getId().equals(ipAddress.getId())) return false;
return getAddress().equals(ipAddress.getAddress());
}
@Override
public int hashCode() {
int result = getId().hashCode();
result = 31 * result + getAddress().hashCode();
return result;
}
@Override
public String toString() {
return "IpAddress{" +
"id=" + id +
", address='" + address + '\'' +
'}';
}
}
然后将Http消息添加到IP地址
IpAddress ip = new IpAddress("177.132.239.67", httpInfoMessages)
在ip\u addr\u status
表中,我想从address
、statusId
和status
字段中再添加3列
如何做到这一点?如果没有其他方法成功,您可以将此联接表作为单独的实体创建。见公认答案:
如果希望在
IpAddress
的表中有更多的列,则可以向类IpAddress
中添加字段!您需要删除@manytomy
并创建一个连接实体。你是说在联接表中?因为你的描述完全无法理解。那么,元素是否被持久化并嵌入到联接表中?那就这么做吧。任何JPA文档都展示了如何使用嵌入元素持久保存集合SSO发布您尝试嵌入集合元素的内容?HttpInfoMessage必须@embeddeble
作为初学者…非常好的问题,包括所有细节和图像。目前尚未解决。我在这里开始一个新问题:
List<HttpInfoMessage> httpInfoMessages = new ArrayList<>();
for(int i=1;i<=10;i++){
HttpInfoMessage httpInfoMessage = new HttpInfoMessage(404L, "FORBIDDEN_WEB_PAGE");
httpInfoMessages.add(httpInfoMessage);
}
IpAddress ip = new IpAddress("177.132.239.67", httpInfoMessages)