Hibernate连接数据库中的每个表

时间:2010-08-02 17:03:45

标签: java flex hibernate jpa blazeds

我已经建立了一个小项目作为测试。我在我的测试服务器上使用BlazeDS和JPA与Hibernate,并使用dpHibernate进行Flex访问以访问Java实体。每个Java实体都扩展了BaseEntity,这是一个包含ID和UUID字段的类。 Flex实体由DTO2FX创建。

我的问题是,当我运行Flex项目尝试从Users实体显示几行时,实际执行的SQL正在加入我的数据库中的每个表。这一直持续到我得到java.lang.StackOverflowError。这种行为是完全出乎意料的,我不确定在哪里寻找解决问题的方法。任何建议都将不胜感激。

显然我已经遗漏了一些细节,但我希望这能给出一个关于该项目的合理想法。我会非常乐意包含任何可能有用的代码,但我真的不知道是什么原因导致了这种行为。谢谢!

编辑:这是一个可以更好地解释问题的映射。

@Entity
@FXClass(ignoreSuperclasses={Principal.class, UserDetails.class})
@Table(name="edrUser")
public class User extends BaseEntity implements IAbstractEntity, Principal, UserDetails {
    @Column(length=20)
    private String username;

    @ManyToMany(mappedBy="users",fetch=FetchType.LAZY)
    private Set<Department> departments = new HashSet<Department>(0);

    @ManyToOne
    @JoinColumn(name="company_id",nullable=false)
        private Company company;

    @OneToMany(cascade=CascadeType.ALL, mappedBy="user", fetch=FetchType.LAZY)
    private Set<DepartmentJobUserLink> departmentJobUsers = new HashSet<DepartmentJobUserLink>(0);

    @Column(length=20)
    private String password;

    @Column(length=20)
    private String forename;


    public User(){
        super();
    }

    /* Getters and setters */ 

}

2 个答案:

答案 0 :(得分:2)

您是否强制延迟加载为假?

答案 1 :(得分:0)

听起来像你在SQL表依赖项中有一个循环,但这只是猜测。已经检查过了吗?