下面是一对多关系的Hibernate示例
cart java class
@Entity
@Table(name="cart")
public class Solocart {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="carts_id")
int id;
@Column(name="cust_name")
String name;
@OneToMany(mappedBy="cartitem")
Set<Soloitems>soloitem;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Soloitems> getSoloitem() {
return soloitem;
}
public void setSoloitem(Set<Soloitems> soloitem) {
this.soloitem = soloitem;
}
}
下一个项目java文件
@Entity
@Table(name="cartitem")
public class Soloitems {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="cart_id")
private int id;
@Column(name="no_item")
private int number;
@ManyToOne
@JoinColumn(name="carts_id")
private Solocart cartitem;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Solocart getCartitem() {
return cartitem;
}
public void setCartitem(Solocart cartitem) {
this.cartitem = cartitem;
}
iml代码
Session sn=Util.getSessionFactory().openSession();
sn.beginTransaction();
Solocart crt=new Solocart();
crt.setName("solomon");
Soloitems itm1=new Soloitems();
Soloitems itm2=new Soloitems();
itm1.setNumber(5);
itm2.setNumber(8);
Set<Soloitems>values= new HashSet<Soloitems>();
values.add(itm1);
values.add(itm2);
crt.setSoloitem(values);
sn.save(crt);
sn.save(itm2);
sn.save(itm1);
sn.getTransaction().commit();
sn.close();
System.out.println("sucessfully created");
在这里,一辆车应该有很多项目,同时运行两个tanles都更新了,但是
# cart_id, no_item, carts_id
'1', ' 8', NULL
'2', ' 5', NULL
第二张桌子
# carts_id, cust_name
'1', ' solomon'
正如您所看到的,这两个表都已更新,但本例中的foreignkey carts\u id没有在owner类中更新,我使用了joincolumn
您没有在任何地方将Solocart
设置为您的SoloItem
s。尝试将其添加到您的代码中
itm1.setCartitem(crt);
itm2.setCartitem(crt);
实体与Soloitems之间存在双向关系,因此在代码中需要从实体的两侧维护关系。
因此,基于此,在代码中,您只是将Soloitems设置为Solocart,但没有将Solocart设置为Soloitems,正如Predrag所述,添加以下几行代码来维护关系:
itm1.setCartitem(crt);
itm2.setCartitem(crt);
问题内容: 我正在尝试使我的@OneToMany和@ManyToOne关系正确。 第1类: 第2类: 当我加载或保存新记录时,这种关系似乎运行良好: 但是,当我尝试更新该记录时,它将尝试将IdeaProfileId设置为null: 当我调试时,我可以看到IdeaProfileId确实在音高对象上设置了… 仅供参考,我不是直接更新从数据库加载的原始对象。这些域映射到UI更新的Model类。因此,在保
问题内容: 我有两个非常简单的对象,并且一个对象应在一组“一对多”关系中包含另一个对象。对象已正确插入数据库中,但“子项”表中的外键始终为“ null”。 我不知道为什么: 这是测试对象,它将子对象保持在其集合中: 这是子对象,它包含指向“ TestObj”的反向链接: 我使用以下代码来持久化此对象: 有人可以解释一下为什么会这样吗? 问题答案: 这很简单:您永远不会初始化中的字段(应将其命名为C
我可以这样做吗?或者有没有其他更好的方法来处理这种情况
我很难按照我的预期建立实体来工作。 我的实体目前看起来像: 因此,当我试图坚持下去时,我会遇到以下异常: 原因:com。微软sqlserver。jdbc。SQLServerException:无法将值NULL插入“requestId”列、表“myDb”中。dbo。CertificateReassignmentRequestPolicy';列不允许空值。插入失败。 如果我将CertificateAs
我有一对一关系的问题-保存后,外键总是被设置为空,即使我有关联的对象。我正在使用Hibernate4.3。7.最终版本为Spring 4.0。0.0版本和MySql 5.6数据库。 在我保存LawFirmProfile对象列后的情况下,参考lawFirm的lawFirm_id始终为空。 实体: 以下是负责保存此记录的代码: Hibernate和Spring配置: 道也是Spring豆,方法注释为@
我在项目中有一对一外键关系映射的问题。 User.java 角色Java语言 这是错误: 导致原因:lass.validateMappingException:无法确定类型:lass.java:265角色,在表:用户,对于列:[inal.jar列(ro)]在org.hibernate.boot.internal.SimpleVmpl.validate类型(SimpleVmpl.java:329)~