JPA Много ко многим отношениям всегда обновляет одну сторонуJAVA

Программисты JAVA общаются здесь
Anonymous
JPA Много ко многим отношениям всегда обновляет одну сторону

Сообщение Anonymous »

У меня есть много отношений в 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

Вернуться в «JAVA»