Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-users] Specification interpretation question

Without checking to see what the behavior is, please tell me what you think the behavior should be for the following scenario:

I have an entity E1 that has a primary key field named x:

@Entity(name = "E1")
public class E1 implements Serializable {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "x")
  private int x;

  public int getX() {
    return this.x;
  }
}

I have an entity E2 like this:

@Entity(name = "E2")
public class E2 implements Serializable {
  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "e1", referencedColumnName = "x", insertable = false, updatable = false)
  private E1 e1;

  @Column(name = "e1")
  private int e1ID;

  public E2() {
    super();
  }

  public int getE1ID() {
    return this.e1ID;
  }

  public void setE1ID(final int code) {
    this.e1ID = code;
  }

  public E1 getE1() {
    return this.e1;
  }

}

In a container-managed stateless EJB, suppose someone has passed in an E2 whose e1ID field has been set explicitly to a valid e1.x value, as though constructed thusly:

final E2 e2 = new E2();
e2.setE1ID(5); // assuming that in the data store there is an E1 with a primary key of 5

Now, what should be the behavior in this EJB if I do this:


assert e2.getE1ID(5); // i.e. verify the conditions described above
e2 = this.entityManager.merge(e2);
assert e2 != null;
final E1 e1 = e2.getE1(); // XXX what should be the result here?  Should e1 be null or not?

I've asked the same problem of the OpenJPA folks and I am curious to hear the EclipseLink team's answer.

Thanks,
Laird

Back to the top