cleaner way of deleting relationships

This commit is contained in:
Athou
2013-07-04 21:32:34 +02:00
parent fca15f422f
commit 4c1c9aef6f
2 changed files with 11 additions and 18 deletions

View File

@@ -1,7 +1,6 @@
package com.commafeed.backend.dao; package com.commafeed.backend.dao;
import java.util.Date; import java.util.Date;
import java.util.Iterator;
import java.util.List; import java.util.List;
import javax.ejb.Stateless; import javax.ejb.Stateless;
@@ -17,7 +16,6 @@ import org.apache.commons.lang.StringUtils;
import com.commafeed.backend.feeds.FeedUtils; import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedEntry;
import com.commafeed.backend.model.FeedSubscription; import com.commafeed.backend.model.FeedSubscription;
import com.commafeed.backend.model.FeedSubscription_; import com.commafeed.backend.model.FeedSubscription_;
import com.commafeed.backend.model.Feed_; import com.commafeed.backend.model.Feed_;
@@ -118,20 +116,7 @@ public class FeedDAO extends GenericDAO<Feed> {
List<Feed> list = q.getResultList(); List<Feed> list = q.getResultList();
int deleted = list.size(); int deleted = list.size();
for (Feed feed : list) { delete(list);
for (FeedEntry entry : feed.getEntries()) {
Iterator<Feed> it = entry.getFeeds().iterator();
while (it.hasNext()) {
Feed f = it.next();
if (f.getId().equals(feed.getId())) {
it.remove();
}
}
em.merge(entry);
}
feed.getEntries().clear();
delete(feed);
}
return deleted; return deleted;
} }

View File

@@ -8,6 +8,7 @@ import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.PreRemove;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
@@ -33,10 +34,10 @@ public class Feed extends AbstractModel {
@Column(length = 40, nullable = false) @Column(length = 40, nullable = false)
private String urlHash; private String urlHash;
@Column(length = 2048, nullable = false) @Column(length = 2048, nullable = false)
private String normalizedUrl; private String normalizedUrl;
@Column(length = 40, nullable = false) @Column(length = 40, nullable = false)
private String normalizedUrlHash; private String normalizedUrlHash;
@@ -144,6 +145,13 @@ public class Feed extends AbstractModel {
@Transient @Transient
private boolean urgent; private boolean urgent;
@PreRemove
private void removeEntriesFromFeed() {
for (FeedEntry entry : entries) {
entry.getFeeds().remove(this);
}
}
public Feed() { public Feed() {
} }