san*_*ity 7 java jpa playframework
我刚开始在Play Framework Web应用程序中构建我的JPA架构.我对SQL有一个合理的理解,但我是一个JPA新手,我在第一个障碍时被绊倒了.
从Play教程我假设您只是创建Java类,JPA/Play将自动为您创建架构.
所以我想在两个模型类(Rankable和Tag)之间创建一个ManyToMany关系:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Rankable extends Model {
public String name;
private Set<Tag> tags;
@ManyToMany()
@JoinTable(name = "RANKABLE_TAGS")
public Set<Tag> getTags() {
return tags;
}
@ManyToMany()
@JoinTable(name = "RANKABLE_TAGS")
public void setTags(final Set<Tag> tags) {
this.tags = tags;
}
}
Run Code Online (Sandbox Code Playgroud)
而另一类:
@Entity
public class Tag extends Model {
public String name;
public String description;
private Set<Rankable> rankables;
@ManyToMany(mappedBy = "tags")
public Set<Rankable> getRankables() {
return rankables;
}
@ManyToMany(mappedBy = "tags")
public void setRankables(final Set<Rankable> r) {
rankables = r;
}
}
Run Code Online (Sandbox Code Playgroud)
但我不断收到以下错误:
发生JPA错误(无法构建EntityManagerFactory):无法确定类型:java.util.Set,在表:Rankable,对于列:[org.hibernate.mapping.Column(tags)]
我究竟做错了什么?
在我们的例子中,原因是我们在场上有一些注释,有些注释在吸气剂上.换句话说,对于特定字段,注释应该在字段上或在getter上.将它们结合在吸气剂上为我们解决了问题.似乎异常没有显示问题的真正原因.顺便说一句,我们使用这种语法进行了许多注释:
实体:
@ManyToMany
@JoinTable(name = "join_table", joinColumns = { @JoinColumn(name =
"leftjoinid") }, inverseJoinColumns = { @JoinColumn(name = "rightjoinid") })
Run Code Online (Sandbox Code Playgroud)实体:
@ManyToMany
@JoinTable(name = "join_table", joinColumns = { @JoinColumn(name =
"rightjoinid") }, inverseJoinColumns = { @JoinColumn(name = "leftjoinid") })
Run Code Online (Sandbox Code Playgroud)最终这似乎起作用了,尽管我不确定为什么:
@Entity
public class Tag extends Model {
public String name;
public String description;
@ManyToMany(mappedBy = "tags", cascade = CascadeType.ALL)
public Set<Rankable> rankables;
}
Run Code Online (Sandbox Code Playgroud)
和
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Rankable extends Model {
@ManyToOne(cascade = CascadeType.ALL)
public User creator;
public String name;
@ManyToMany()
public Set<Tag> tags;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9671 次 |
| 最近记录: |