[jboss-user] [JBoss Seam] - Entity relation deleated
mhiggins
do-not-reply at jboss.com
Sun Oct 21 09:35:36 EDT 2007
This may be an EJB3 question but I am new to both and working with seam ? I have a many to many unidirectional relation. I have a simple from to build these objects / relations up and that works fine. In another form I am trying to work on instances of the object graph but when I display the page the last line in the log is:
| 09:09:27,174 INFO [STDOUT] Hibernate: delete from Profile_Location where profile_id=?
| 09:09:27,225 INFO [STDOUT] Hibernate: delete from Profile_Location where profile_id=?
| 09:09:27,226 INFO [STDOUT] Hibernate: delete from Profile_Location where profile_id=?
|
I have no delete calls in my code and can't figure out where this is coming from. There are 3 users in the system and that corresponds to the 3 delete calls above. Are my relations mapped wrong? Here is the code for the relations. I have a user and a user has a profile and the profile can have many locations, i.e. a person can have more then one address. The main question is why are these relations being deleted?
User Entity
| @Entity
| @Name("user")
| public class User implements Serializable {
|
| ...
| private Profile profile;
| ...
| @OneToOne(cascade = CascadeType.ALL)
| @JoinColumn(name = "profile_id")
| public Profile getProfile() {
| return profile;
| }
|
| public void setProfile(Profile profile) {
| this.profile = profile;
| }
| }
|
Profile Entity
| @Entity
| @Name("profile")
| public class Profile implements Serializable {
| ...
| private Set<Location>locations;
| ....
| @ManyToMany
| @JoinTable(name="Profile_Location",
| joinColumns={@JoinColumn(name="profile_id")},
| inverseJoinColumns={@JoinColumn(name="location_id")})
| public Set<Location> getlocations() {
| return locations;
| }
|
| public void setlocations(Set<Location> locations) {
| locations = locations;
| }
| }
|
Location Entity. I want the Location to be associated with other types of objects(non just profiles ) there is no reference to the Profile in the Locaiton.
| @Entity
| @Name("location")
| public class Location implements Serializable {
| ...
| }
|
DistanceCalcAction, this is the statefull session bean that is using the Location entities to calcualte distance between users.
| @Stateful
| @Scope(EVENT)
| @Name("distanceCalc")
| public class DistanceCalcAction implements DistanceCalc {
|
| @Logger Log log;
|
| @PersistenceContext
| private EntityManager em;
|
| private User fromUser;
|
| private User toUser;
|
| @In
| private FacesMessages facesMessages;
|
| @Out
| private List<User> users;
|
| @Out(required=false)
| private Double distance;
|
| @Create
| public void getUsers(){
| users = (List<User>)em.createQuery("SELECT u from User as u").getResultList();
| }
|
| public void calc(){
|
| Distance distanceTool = new Distance();
|
| User from = (User) em.createQuery("SELECT u FROM User u WHERE u.id = :id").setParameter("id",fromUser.getId()).getSingleResult();
| User to = (User) em.createQuery("SELECT u FROM User u WHERE u.id = :id").setParameter("id",toUser.getId()).getSingleResult();
|
| distance = distanceTool.distanceVincenty(
| from.getProfile().getDefaultLocation().getLatitude(),
| from.getProfile().getDefaultLocation().getLongitude(),
| to.getProfile().getDefaultLocation().getLatitude(),
| to.getProfile().getDefaultLocation().getLongitude(), Distance.FORMAT_MILES);
| }
|
| @Factory("fromUser")
| public User getFromUser() {
| fromUser = new User();
| return fromUser;
| }
| @Factory("toUser")
| public User getToUser() {
| toUser = new User();
| return toUser;
| }
|
| public void setFromUser(User fromUser) {
| this.fromUser = fromUser;
| }
|
| public void setToUser(User toUser) {
| this.toUser = toUser;
| }
| @Destroy @Remove
| public void destroy() {}
|
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4097249#4097249
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4097249
More information about the jboss-user
mailing list