Java 休眠多外键
我刚开始冬眠 我的问题是解析多个外键的值。我可以用SQL来做,但是Hibernate注释让我发疯 例如,我得到了这两张表: 表移动集Java 休眠多外键,java,sql,hibernate,Java,Sql,Hibernate,我刚开始冬眠 我的问题是解析多个外键的值。我可以用SQL来做,但是Hibernate注释让我发疯 例如,我得到了这两张表: 表移动集 MoveSet\u ID 冲床1 冲床2 抓斗1 抓斗2 抓斗3 格拉普4 桌子移动 移动标识 名字 损坏 移动类型标识 反机会 冲头和抓图都是外键,用于引用Move_ID 我的目标是执行一个session.createQuery(“来自移动集”).list()和,以获取具有移动名称而不是ID的移动集 这在Hibernate中可能吗 package hib
- MoveSet\u ID
- 冲床1
- 冲床2
- 抓斗1
- 抓斗2
- 抓斗3
- 格拉普4
- 移动标识
- 名字
- 损坏
- 移动类型标识
- 反机会
session.createQuery(“来自移动集”).list()代码>和,以获取具有移动名称而不是ID的移动集
这在Hibernate中可能吗
package hibernate;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "Moves")
public class Moves implements Serializable {
/**
*
*/
private static final long serialVersionUID = -1522367877613954187L;
private int id;
private String name;
private int damage;
private int movetype_id;
private int counterchance;
public Moves() {
}
public Moves(int id, String name, int damage, int movetype_id,
int counterchance) {
this.id = id;
this.name = name;
this.damage = damage;
this.movetype_id = movetype_id;
this.counterchance = counterchance;
}
@Id
@Column(name = "Move_ID")
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "Name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "Damage")
public int getDamage() {
return damage;
}
public void setDamage(int damage) {
this.damage = damage;
}
@Column(name = "MoveType_ID")
public int getMovetype_id() {
return movetype_id;
}
public void setMovetype_id(int movetype_id) {
this.movetype_id = movetype_id;
}
@Column(name = "Counterchance")
public int getCounterchance() {
return counterchance;
}
public void setCounterchance(int counterchance) {
this.counterchance = counterchance;
}
@Override
public String toString() {
return "Moves - Name: " + name;
}
}
及
是的,这是可能的,事实上ORM和Hibernate的全部目的是获取对象(您的值),而不是普通ID。您的映射错误。您应该通过注释映射您的关系(我假设拳和格斗是移动的),如@OneToOne
,@OneToMany
,以及@JoinColumn
,因此您的字段不需要此注释
@Column(name = "Graple_1")
public int getGraple_1() {
return graple_1;
}
应该是
@ManyToOne
@JoinColumn(name="Graple1")
public Move getGraple_1() {
return graple_1;
}
通过这种方式,您将获得相关的移动
对象,并从中获取您想要的任何数据,以及请求的名称
您可以向我们展示一些代码吗?将代码添加到原始帖子中这解决了我的问题。谢谢你,很抱歉这么晚才回答。
@ManyToOne
@JoinColumn(name="Graple1")
public Move getGraple_1() {
return graple_1;
}