我正在使用Jboss hibernate工具插件与Eclipse Kepler和JDK 6来反向设计来自Mysql好老sakila db的带注释的POJO文件。
hibernate代码生成配置设置为生成EJB3注释。以下是数据库图表的片段:
它有一个表film_actor,用于支持表格电影和演员之间的多对多关系。
当我从表格电影,演员&中反向设计POJO时film_actor 一起,我得到:
Film.java
@Entity
@Table(name = "film", catalog = "sakila")
public class Film implements java.io.Serializable {
private Short filmId;
private String title;
private String description;
private Date releaseYear;
private byte languageId;
private Byte originalLanguageId;
private byte rentalDuration;
private BigDecimal rentalRate;
private Short length;
private BigDecimal replacementCost;
private String rating;
private String specialFeatures;
private Date lastUpdate;
private Set filmActors = new HashSet(0);
Actor.java
@Entity
@Table(name = "actor", catalog = "sakila")
public class Actor implements java.io.Serializable {
private Short actorId;
private String firstName;
private String lastName;
private Date lastUpdate;
private Integer age;
private Set filmActors = new HashSet(0);
FilmActor.java
@Entity
@Table(name = "film_actor", catalog = "sakila")
public class FilmActor implements java.io.Serializable {
private FilmActorId id;
private Actor actor;
private Film film;
private Date lastUpdate;
FilmActorId.java
@Embeddable
public class FilmActorId implements java.io.Serializable {
private short actorId;
private short filmId;
到目前为止,太好了。但是如果我已经为演员和演员生成了POJO电影和我反向工程表film_actor,我得到以下课程:
@Entity
@Table(name = "film_actor", catalog = "sakila")
public class FilmActor implements java.io.Serializable {
private FilmActorId id;
private Date lastUpdate;
注意Actor&的引用如何如果在此课程中,电影将丢失,而不是之前的FilmActor.java。只有当我为所有三个表一起重新生成POJO时,才能得到Actor& amp;电影在FilmActor.java。
我对hibernate很新,所以我需要一些澄清:
1)我们是否真的需要Actor& amp; FilmActor.java中的电影?使用外键引用它所引用的类是标准做法吗?
2)为什么FilmActor.java中缺少引用,如果我已经拥有了Actor.Java& Film.Java可以在同一个包中找到?是否有相同的配置设置?
答案 0 :(得分:0)
如果要创建与已经反向工程的实体有关系的新表,则需要选择新表和旧表来进行正确的逆向工程。
我还遇到了jboss eclipse工具无法为one-to-many和many-to-many创建注释的问题。事实证明这是一个案例问题。所有表名(mysql)都是大写的,一旦我切换到小写,所有实体都是正确生成的。