在观察一些日志条目时,我观察到一种行为,我不明白。我重新创建了场景。
实体:
@Entity
public class SimpleEntity implements Serializable {
private static final long serialVersionUID = 2777681889998131084L;
@Id
@GeneratedValue
private Long id;
@Version
private Long version;
@Column(length = 20, nullable = false, unique = true, updatable = false)
@NotNull
private String username;
@Column(length = 60)
private String email;
// Constructors
// getters/setters
// @Override
// toString : generated by eclipse, modified to include super.toString
// hashCode, equals : generated by eclipse, based on 'username'
}
测试用例
@Test
public void testUpdate() {
SimpleEntity simple;
SimpleEntity simple2;
try {
simple = bean.create(new SimpleEntity("user",
"original@original.com")); // em.persist
simple.setEmail("updated@updated.com");
simple2 = bean.update(simple); // em.merge
System.out.println(simple);
System.out.println(simple2);
} catch (EJBException e) {
System.out.println(e.getMessage());
}
}
它打印与上述 System.out.println 行对应的以下行
...SimpleEntity@36ebea SimpleEntity [id=1, version=1, username=user, email=updated@updated.com]
...SimpleEntity@36ebea SimpleEntity [id=1, version=2, username=user, email=updated@updated.com]
我觉得奇怪的是两个实体的地址相同(SimpleEntity@36ebea),但如果我查看数据,它就不一样了。“版本”不同。( 1 & 2 )
相同的实例(地址相同)如何显示不同的数据?有一些代理在玩吗?如何?