考慮下面的代碼:休眠不取公共成員
@Entity
@Table(name = "a")
public class A implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
public int id;
@Transient
public B b;
public B getB()
{
return B;
}
}
當我取A,我手動填充B(另一休眠實體)。如果我嘗試通過使用a.b訪問,那麼它失敗,但是,如果我用戶a.getB();那麼它成功了。
這是爲什麼?
我假設你的意思是,類成員應該始終是私人的,是的,我同意,但我繼承了這些代碼,並且必須在JSP中更改成千上萬的引用,因此不太可能發生。 – Jesse 2009-07-03 18:52:02
好吧,我希望搞砸的架構不是你的錯,然後;)。但是你有沒有試圖分離物體?我想,基於這樣的體系結構,使用了OpenSessionInViewFilter(或(反 - )「模式」)),因此該對象不會在請求內被分離。 您必須記住,實際的對象是代理,並且對成員和方法的訪問依賴於持久性管理器的策略或實現。 Hibernate假定遵循一些規則,比如不直接訪問成員。 – cafebabe 2009-07-03 19:16:08