Hibernate@ManyToMany得到一个键列表,而不是实体列表



数据库模式的组成如下:

CREATE TABLE `pages`
(
`identifier`  INT(11) NOT NULL auto_increment,
`title`       VARCHAR(150) NOT NULL,
PRIMARY KEY (`identifier`),
)
CREATE TABLE `tags`
(
`identifier`  INT(11) NOT NULL auto_increment,
`name`        VARCHAR(50) NOT NULL,
PRIMARY KEY (`identifier`)
)
CREATE TABLE `pages_tags`
(
`page` INT(11) NOT NULL,
`tag`  INT(11) NOT NULL,
KEY `pagetag_page` (`page`),
KEY `pagetag_tag` (`tag`),
CONSTRAINT `pages_tags_ibfk_1` FOREIGN KEY (`page`) REFERENCES `pages` (
`identifier`),
CONSTRAINT `pages_tags_ibfk_2` FOREIGN KEY (`tag`) REFERENCES `tags` (
`identifier`)
)

每个页面可以有许多标签,每个标签可以分配给许多页面(ManyToMany(。在页面实体类上,多对多关系定义如下

@ManyToMany
@JoinTable(
name = "pages_tags",
joinColumns = { @JoinColumn(name = "page", nullable = false) },
inverseJoinColumns = { @JoinColumn(name = "tag", nullable = false) }
)
private List<Tag> tags;

如何只获取主键而不获取整个标记实体?我知道我可以使用@NamedQuery,但如果在实体类中添加一个整数列表字段会更好

@NamedQuery(name = "Page.findTags", query = "SELECT p.tag FROM PageTag p WHERE p.page = :identifier")

简而言之,我希望hibernate自动生成一个包含该页面的pages_tags.tag字段的整数列表,而不是获得一个标记实体列表

我正在使用:春季启动启动数据jpa 3.0.0-RC1

答案是@ElementCollection。请在这里查看;

https://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#d5e5405

相关内容

  • 没有找到相关文章

最新更新