У меня есть много отношений в JPA < /p>
MailItem может принадлежать к нескольким подписке, а подписка может содержать несколько MailItem. У меня есть промежуточная таблица подписки MailItem, где у меня есть иностранные ключи и дополнительные столбцы, такие как вращение. Когда я обновляю подписку mailItem rotateValue, я ожидал, что увижу только обновление таблицы подписки MailItem, но я всегда вижу, что Hibernate генерирует также оператор SQL обновления. Но я ничего не меняю на объекте почтового элемента.@Entity(name="SubscriptionMailItem")
@Table(name="MMT_MAIL_ITEM_SUBSCRIPTION")
public class SubscriptionMailItem
@Embeddable
public static class SubscriptionMailItemId implements Serializable {
@Column(name="SUBSCRIPTION_ID")
private Long subscriptionId;
@Column(name= "MAIL_ITEM_ID")
private Long mailItemId;
public SubscriptionMailItemId(){
}
public SubscriptionMailItemId(Long subscriptionId, Long mailItemId){
this.subscriptionId = subscriptionId;
this.mailItemId = mailItemId;
}
public Long getMailItemId() {
return mailItemId;
}
public Long getSubscriptionId() {
return subscriptionId;
}
public void setMailItemId(Long mailItemId) {
this.mailItemId = mailItemId;
}
public void setSubscriptionId(Long subscriptionId) {
this.subscriptionId = subscriptionId;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass())
return false;
SubscriptionMailItemId that = (SubscriptionMailItemId) o;
return Objects.equals(subscriptionId, that.getSubscriptionId()) &&
Objects.equals(mailItemId, that.getMailItemId());
}
@Override
public int hashCode() {
return Objects.hash(subscriptionId, mailItemId);
}
}
@EmbeddedId
private SubscriptionMailItemId id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="SUBSCRIPTION_ID",
insertable = false,
updatable = false)
private Subscription subscription;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="MAIL_ITEM_ID",
insertable = false,
updatable = false)
private MailItem mailItem;
@Column(name = "rotate_value")
private Integer rotateValue;
< /code>
@Entity
@Table(name = "MMT_MAIL_ITEM")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE")
public abstract class MailItem{
@Id
@GeneratedValue(generator = "mmt_mail_item_seq", strategy = GenerationType. SEQUENCE)
@SequenceGenerator(name="mmt_mail_item_seq", sequenceName = "mmt_mail_item_seq", allocationSize=1)
@Column(name = "id")
private Long id;
@Column(name="TYPE", insertable = false, updatable = false)
protected String type;
@OneToMany(
mappedBy = "mailItem"
)
private Set subscriptionMailItems = new HashSet();
< /code>
Подробнее здесь: https://stackoverflow.com/questions/796 ... e-one-side