如何弄清楚2桌的情况

时间:2014-01-27 18:41:52

标签: java hibernate jpa

我正在尝试学习hibernate + spring,现在我遇到了(可能是常见的)问题。

想象一下,我有两个模特:

@Entity
@Table(name="cars")
public class Cars {

@Column(name="averageSpeed")
private double speed;

/?? 
private List<Type> types;

// setters and getters
}


and Type model:

@Entity
@Table(name="types")
public class Type{

// some variables

   //?//
   private Cars car;

}

在这种情况下你会发现“//?//”我不知道如何解决这个问题。我想做的是让这辆车有很多种类型。它应该是OneToMany,但我怎样才能适应这种情况呢?

我目前的解决方案:

添加到Cars类:

@OneToMany(mappedBy="cars")
private List<Type> types;

添加到Type类:

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Typeid")
Cars car;

这可以吗?我想让汽车有很多种类型。例如,如果我有汽车混合动力车,那么它可以与两种类型的汽车相关联。

2 个答案:

答案 0 :(得分:1)

当然没关系,如果你有1-n的关系,它应该有效。 要了解有关JPA / Hibernate的更多信息,我建议您使用以下教程: http://www.mkyong.com/tutorials/hibernate-tutorials/ 看看“Hibernate Association(表关系)”部分。这是非常明确的。 希望能帮助到你。好好学习。

答案 1 :(得分:0)

在上面你应该有汽车而不是汽车,因为你使用的是可变汽车:

@OneToMany(mappedBy="car")
private List<Type> types;

add to Type class:

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Typeid")
Cars car;

和他们各自的二传手和吸气鬼。

您也可以像往常一样在反之亦然的方向上级联父表和子表:

@Entity
public class Car{
  ...
  ...
  @OneToMany(mappedBy="car", orphanRemoval=true, cascade={CascadeType.ALL})
  private List<Type> types;
  ...
}