来自表,实体的JPA实体不正确

时间:2014-01-27 01:42:04

标签: hibernate jpa

我有一个MySQL数据库,大约有40个表和很多外键。我尝试使用JPA工具“表中的实体”,它生成了所有实体。但是实体不正确。无论出于何种原因,注释都高于get方法而不是实例变量声明。此外,实体中也没有外键关系。

有些情况下,多个表都引用了一个表。我不知道这是否会混淆JPA工具或其他东西。数据库是MySQL 5.6,所有表都使用InnoDB存储引擎。我们正计划使用Hibernate 4 JPA实现。我们在实体生成时使用了org.hibernate.dialect.MySQL5InnoDBDialect方言设置。

我不确定问题是什么。 DBA审查了模式,我们没有太多灵活性来更改模式。我错过了什么地方?或者JPA工具不能很好地处理复杂的模式吗?

如果逆向工程不可行,我们可以手动创建实体。

编辑:

我之前曾在一个小型数据库中使用过一次JPA工具实体,少于10个具有最少外键数量的表,并且它运行良好。

编辑2:

我有两个用户和角色表,用户和角色。

用户实体应该有这样的东西

@OneToMany
@JoinColumn(referencedColumnName="ID")
private Set<Role> roles;

相反,这是它在角色实体中生成的内容

@Column(name="UserID", nullable=false)
private int userId;

从Role表中的UserID到User表中的ID有一个外键。但是,所有外键都会发生这种情况。反向工程实体没有外键关系。

1 个答案:

答案 0 :(得分:0)

大多数现代IDE,如Netbeans,Eclipse等,都能够自动从数据库生成实体(使用选项create entity from tables)。

不同的IDE具有不同的实体生成默认设置。此外,它还允许您添加/删除一些选项。从Eclipse生成的实体与Netbeans(或其他IDE)生成的实体不同。但无论他们生成什么实体,都是正确的。

因此,当您自动生成实体时,请确保为您选择了正确的选项。如果没有,则在生成后手动更改实体。而不是从头开始构建所有实体,最好有一些基线,然后根据需要进行编辑。