java JPA/eclipselink 2.6.0/mysql:生成的表名不正确
我创建了两个表:
@Entity
@Table(name="instanceOfClass")
public class InstanceOfClass {
(...)
@OneToMany(fetch=FetchType.LAZY)
public List<InstanceOfDataProperty> getDataProperties() {
return dataProperties;
}
(...)
}
及
@Entity
@Table(name="instanceOfDataProperty")
public class InstanceOfDataProperty {
(...)
@ManyToOne(optional=false,fetch=FetchType.LAZY)
@JoinColumn(referencedColumnName="instance_id", nullable=false, updatable=false)
public InstanceOfClass getInstance()
{
return this.instance;
}
(...)
}
调用getDataProperties()时,我在日志中看到以下错误
Call: SELECT t1.id, t1.smallContent, t1.VALUE, t1.INSTANCE_id,t1.prop_id, t1.LARGECONTENT_id FROM instanceOfClass_instanceOfDataProperty t0, instanceOfDataProperty t1 WHERE ((t0.InstanceOfClass_id = ?) AND (t1.id = t0.dataProperties_id)) bind => [1 parameter bound]
Query: ReadAllQuery(name="file:/path/to/WEB-INF/classes/_jdbc/mydao" referenceClass=InstanceOfDataProperty sql="SELECT t1.id, t1.smallContent, t1.VALUE, t1.INSTANCE_id, t1.prop_id, t1.LARGECONTENT_id FROM instanceOfClass_instanceOfDataProperty t0, instanceOfDataProperty t1 WHERE ((t0.InstanceOfClass_id = ?) AND (t1.id = t0.dataProperties_id))")
(……) 原因:com。mysql。jdbc。例外。jdbc4。MySQLSyntaxErrorException:Table'user_me。instanceOfClass_instanceOfDataProperty'不存在
这个用户在哪里告诉我。instanceOfClass_InstanceOfData属性来自哪里?我该怎么解决这个问题
# 1 楼答案
我认为您必须在
InstanceOfClass
实体中使用mappedBy
值作为@OneToMany
注释,如下所示:其中
instanceOfClass
应该是InstanceOfDataProperty类中的getter的名称摘自JavaEE7 pdf,第37.1.5.1章:
我用实体的人和地址(1:N)做了一个快速测试。首先,我省略了
mappedBy
,创建了一个名为Person_Address
的表。添加mappedBy
之后,创建了一个表Address