gpt4 book ai didi

java - 映射 Java 持久性中的附加字段

转载 作者:行者123 更新时间:2023-11-28 23:07:42 25 4
gpt4 key购买 nike

我使用 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 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 + '\'' +
'}';
}
}

而且,我这里有第二个实体,

@Entity
public class HttpInfoMessage {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "S_ID")
private Long sId;

@Column(name = "STATUS_ID")
private Long statusId;

@Column(name = "STATUS")
@NotEmpty
private String status;

public HttpInfoMessage() {

}

public HttpInfoMessage(String status) {
this.status = status;
}

public HttpInfoMessage(Long statusId, String status) {
this.statusId = statusId;
this.status = status;
}

public HttpInfoMessage(Long statusId, String status, List<IpAddress> ipAddresses) {
this.statusId = statusId;
this.status = status;
this.ipAddresses = ipAddresses;
}

public Long getsId() {
return sId;
}

public void setsId(Long sId) {
this.sId = sId;
}

public Long getStatusId() {
return statusId;
}

public void setStatusId(Long statusId) {
this.statusId = statusId;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

@JsonIgnore
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "httpInfoMessages")
private List<IpAddress> ipAddresses = new ArrayList<>();

public List<IpAddress> getIpAddresses() {
return ipAddresses;
}

public void setIpAddresses(List<IpAddress> ipAddresses) {
this.ipAddresses = ipAddresses;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof HttpInfoMessage)) return false;

HttpInfoMessage httpInfoMessage1 = (HttpInfoMessage) o;

if (!getStatusId().equals(httpInfoMessage1.getStatusId())) return false;
return getStatus().equals(httpInfoMessage1.getStatus());
}

@Override
public int hashCode() {
int result = getStatusId().hashCode();
result = 31 * result + getStatus().hashCode();
return result;
}

@Override
public String toString() {
return "Status{" +
"statusId=" + statusId +
", status='" + status + '\'' +
'}';
}
}

当我在数据库中持久化一个列表时,它创建了 3 个表,

Ip Address表,即ip_address

enter image description here

Http消息信息表,即http_info_message

enter image description here

并且,最后一个表 ip_addr_statusIP 地址 ID 映射到 Http 信息消息 ID

enter image description here

我想展示 IpAddress 实体的形成很好,

List<HttpInfoMessage> httpInfoMessages = new ArrayList<>();

for(int i=1;i<=10;i++){

HttpInfoMessage httpInfoMessage = new HttpInfoMessage(404L, "FORBIDDEN_WEB_PAGE");
httpInfoMessages.add(httpInfoMessage);
}

然后将Http消息添加到IpAddress,

IpAddress ip = new IpAddress("177.132.239.67", httpInfoMessages)

ip_addr_status 表中,我想从 addressstatusIdstatus< 字段中再添加 3 列

怎么做?

最佳答案

如果其他方法都不成功,您可以将此连接表创建为单独的实体。查看接受的答案: Mapping many-to-many association table with extra column(s)

关于java - 映射 Java 持久性中的附加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46724113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com