我想向实体类添加嵌入关系。
在我的数据库中,我有表蛋白质:
+-------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+---------+----------------+
| PID | int(11) unsigned | NO | PRI | NULL | auto_increment |
| uniprot_UniprotAC | char(6) | YES | MUL | NULL | |
| comment | int(11) unsigned | YES | MUL | NULL | |
+-------------------+------------------+------+-----+---------+----------------+
和表基准:
+-----------------+--------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------------------------+------+-----+---------+-------+
| ba_type | varchar(255) | YES | | NULL | |
| target | int(11) unsigned | NO | MUL | NULL | |
| rec_diluation | varchar(255) | YES | | NULL | |
| comment | text | YES | | NULL | |
+-----------------+--------------------------------+------+-----+---------+-------+
在基准测试中,字段目标是蛋白质表的外键
我已经从蛋白质表中找到了一个名为SupProtein的实体,它运行良好。
现在,我想向基准类添加一个嵌入关系。
这是我的基准课程:
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
@Embeddable
public class Benchmark implements Serializable {
@Column(name="ba_type")
private String type;
@Column(name="comment")
private String comment;
@Column(name="recDilution")
private String recDilution;
public Benchmark(){
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getRecDilution() {
return recDilution;
}
public void setRecDilution(String recDilution) {
this.recDilution = recDilution;
}
}
在我的实体课程中,我添加了:
@Embedded
private Benchmark benchmark;
但当我尝试构建时,会出现以下错误:
Internal Exception: Exception [EclipseLink-7246] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.ValidationException
Exception Description: The Entity class [class SupEntity.SupProtein] has an embedded attribute [benchmark] of type [class Benchmark] which is NOT an Embeddable class. Probable reason: missing @Embeddable or missing <embeddable> in orm.xml if metadata-complete = true
我没有创建任何ORM. xml文件,在任何地方都找不到。我需要一个orm.xml文件来创建可嵌入的关系还是我的问题?
现在,我想向基准类添加一个嵌入关系。
我认为你的观念是错误的:
@Embedded注释用于指定值为可嵌入类实例的实体的持久字段或属性。默认情况下,@Embeddeble类中指定的列定义适用于所属实体的表
嵌入类不是实体,也不在表中。如果基准是一个表,则必须在类上使用@实体注释。仅当类的某些属性可以视为对象时,才使用可嵌入。
我需要orm吗。xml文件来创建可嵌入的关系,或者我的问题是什么?不,orm。xml不是必需的,也不是用于此目的。
如果您想在类之间建立关系,您应该根据关系的基数使用@OneToOne、@OneTo很多
问题内容: 我想知道是否有可能在另一个Embeddable中包含Embeddable的ElementCollection? 这是我的供应商实体的示例,该实体具有可嵌入类型的地址列表: 这是我的可嵌入地址,其中包含可嵌入电话的列表 这是嵌入式电话的定义 我目前正在使用JPA 2 + Hibernate 3.6.x对此进行测试 在地址中使用嵌入式电话在我的测试中导致错误。这是最底层的部分调试消息: 删
问题内容: 我想做这样的事情: 对象ReportingFile可以是LogRequest或LogReport文件。(两者结构相同) 一个对象Reporting,其中包含一个logRequest,其中包含带日期的logReport列表。 我试图设置一个EmbededId,这将是logRequest的属性。这就是我遇到的问题。我没有来管理嵌入式ID。(http://docs.jboss.org/hib
问题内容: 我在映射类的嵌入式属性时遇到麻烦。我创建了一些类,这些类与我试图说明的类相似。基本上,我有一个使用继承的@Embeddable类层次结构。顶级类“零件号”只有一个属性,扩展类没有为“零件号”类添加属性,它们仅添加了一些验证/逻辑。 这是我的意思: 部分 零件号 福特PARTNUMBER 高贵的零件编号 当然这是行不通的,因为Hibernate忽略了继承层次结构,并且不喜欢PartNum
问题内容: 我在映射类的嵌入式属性时遇到麻烦。我创建了一些类,这些类与我试图说明的类相似。基本上,我有一个使用继承的@Embeddable类层次结构。顶级类“零件号”仅具有一个属性,扩展类未向“零件号”类添加任何属性,它们仅添加了一些验证/逻辑。 这是我的意思: 部分 零件号 福特PARTNUMBER 高贵的零件编号 当然这是行不通的,因为Hibernate忽略了继承层次结构,并且不喜欢PartN
我想让我的实体中的@Embedded字段“foo”在JPA 2.0中不可更新 如果我有另一个实体而不是@Em的可嵌入,我可以使用@列注释的updatable=false属性,但@Em天呐没有这样的属性 我发现了一个示例,即@Col的(updatable=false)注解直接用在了嵌入式数据库的字段上。 ..但是,如果我将 FooEmbedable 也用于另一个我希望它可以更新的表,会发生什么? 我
我有一个相当典型的场景,其中有一个main@实体,他内部的所有内容都是可嵌入的(因此,没有父实体,内部的所有内容都没有意义)。现在JPA 2.0阻止我在另一个@ElementCollection中定义的@Embeddeble中嵌套一个@ElementCollection: JSR-317 2.6可嵌入类和基本类型的集合包含在元素集合中的可嵌入类(包括另一个可嵌入类中的可嵌入类)不得包含元素集合,也