1

我正在使用休眠逆向工程从 MySQL 数据库生成我的 Java 类。我将 Eclipse Juno 与 Hibernate Tools 一起使用。
一切都很好,但我想更进一步,但我被困住了。

假设逆向工程生成了一个类Calls.java和一个类Users.java

/**
 * Calls generated by hbm2java
 */
@Entity
@Table(name = "calls", catalog = "myDB")
public class Calls implements java.io.Serializable {

    private String id;
    private String name;
    private Date dateEntered;
    private String modifiedUserId;
    private String assignedUserId;
...
}

/**
 * Users generated by hbm2java
 */
@Entity
@Table(name = "users", catalog = "myDB")
public class Users implements java.io.Serializable {

    private String id;
    private String userName;
...
}

属性modifiedUserIdassignedUserIdfromCalls实际上是id来自Users实例的 (在 db 中它们是外键)。

当我只设置一个外键(比如说 for assignedUserId)时,我得到 Calls.java 的以下定义:

/**
 * Calls generated by hbm2java
 */
@Entity
@Table(name = "calls", catalog = "myDB")
public class Calls implements java.io.Serializable {

    private String id;
    private String name;
    private Date dateEntered;
    private String modifiedUserId;
    private Users users;
...
}

如您所见,我失去了assignedUserId.
但是,如果我定义了 2 个外键(forassignedUserIdmodifiedUserId),类型为 Users 的属性将是表中定义的第一个外键(在我的例子中是modifiedUserId)。

/**
 * Calls generated by hbm2java
 */
@Entity
@Table(name = "calls", catalog = "myDB")
public class Calls implements java.io.Serializable {

    private String id;
    private String name;
    private Date dateEntered;
    private Users users;
    private String assignedUserId;
...
}

我想在生成的类中获得的Calls.java是拥有modifiedUserIdassignedUserId成为类型Users而不是String

/**
 * Calls generated by hbm2java
 */
@Entity
@Table(name = "calls", catalog = "myDB")
public class Calls implements java.io.Serializable {

    private String id;
    private String name;
    private Date dateEntered;
    private Users modifiedUserId;
    private Users assignedUserId;
...
}

有人对如何做到这一点有任何提示吗?我一直在检查很多关于如何从数据库生成 POJO 的教程以及用于逆向工程的 jboss 文档;但我找不到有关如何在生成的 POJO 类中包含对象的线索。

非常感谢您的帮助!
亲切的问候,
BS_C3

4

0 回答 0