我正在使用休眠逆向工程从 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;
...
}
属性modifiedUserId
和assignedUserId
fromCalls
实际上是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 个外键(forassignedUserId
和modifiedUserId
),类型为 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
是拥有modifiedUserId
和assignedUserId
成为类型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