【发布时间】:2016-12-27 17:29:34
【问题描述】:
我有两个具有多对一(一对多)关系的实体。
类 ParserEntity:
import javax.persistence.*;
@Entity
@Table(name = "parser", schema = "newsmonitoringdb")
public class ParserEntity {
public ParserEntity() {
}
public ParserEntity(String name, SourceTypesEntity type) {
this.name = name;
this.type = type;
}
@Id
@Column(name = "id")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Basic
@Column(name = "name")
private String name;
@ManyToOne(optional = false)
@JoinColumn(name="type",referencedColumnName="id")
private SourceTypesEntity type;
...//getters, setters and other fields are here
}
}
类 ParserTypesEntity:
import javax.persistence.*;
import java.util.Collection;
import java.util.List;
/**
* Created by User on 17.08.2016.
*/
@Entity
@Table(name = "source_types", schema = "newsmonitoringdb")
public class ParserTypesEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Basic
@Column(name = "name")
private String name;
@OneToMany(mappedBy="type", fetch=FetchType.EAGER, targetEntity = ParserEntity.class)
private Collection<ParserEntity> siteParser;
...//getters and setters are here
}
}
他们有一个领域的关系,一切似乎都很好。 但是,我希望 ParserTypeEntity 类仅将 ParserEntity 类中的名称保存在单独的 Collection 字段中,而不是 ParserEntity 列表中。
我希望在从数据库中检索类型时自动填充它们,就像现在使用 ParserEntity 对象一样。
有没有办法做到这一点,或者我必须将关系更改为单向关系,获取所有类型,然后通过其 id 获取每种类型的名称?
【问题讨论】:
-
它保存了您的模型所拥有的内容(正如所有 JPA 文档所说)。修复你的模型,让你有一个字符串集合,然后填充它。
-
我尝试创建没有“mappedBy”和“targeterEntity”参数的 OneToMany 字段。我做了一个集合保存字符串参数,但是编译器告诉 OneToMany 属性值类型不应该是“String”
-
显然
@OneToMany不应该被使用......那是为了关系。你想存储一个字符串集合......这需要@ElementCollection!建议您阅读解释这些概念的 JPA 教程
标签: java mysql jpa foreign-keys mapping