Hibernate 未获取公共成员

发布于 2024-07-26 06:31:01 字数 405 浏览 5 评论 0原文

考虑以下代码:

@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(另一个休眠实体)。 如果我尝试使用 ab 进行访问,则会失败,但是,如果我使用 a.getB(); 然后它就成功了。

为什么是这样?

Consider the following code:

@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;
    }
}

When I fetch A, I'm manually filling B (another hibernate entity). If I try and access by by using a.b, then it fails, but, if I user a.getB(); then it succeeds.

Why is this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

染年凉城似染瑾 2024-08-02 06:31:01
  1. 类成员永远应该是私有的!
  2. 如果您的对象附加到 Hibernate Session,那么您正在使用代理。 因此,如果您想直接访问类成员(这很糟糕!),您必须首先分离该对象。
  1. Class members should ever be private!
  2. If your object is attached to the Hibernate Session, you're working on a proxy. So, if you like to access your class member directly (which is bad!), you have to detach the object first.
怪我鬧 2024-08-02 06:31:01

听起来像是一个懒惰的获取问题。 当您尝试直接访问它时,公共引用为空,但是当您使用“get”进行访问时,Hibernate 知道调用数据库并为您提供该实例。

Sounds like a lazy fetching issue. The public reference is null when you try to access it directly, but when you do it with "get", Hibernate knows to call out to the database and hydrate that instance for you.

愛上了 2024-08-02 06:31:01

因为b场是瞬态的。

有必要让它暂时吗? 尝试将其删除。

Because b field is transient.

Is there any need for it to be transient? Try removing it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文