使用hibernate,我在保存实例时遇到了问题。
我有以下数据库结构:
Item
- id
- attributeId
- other stuff
Attribute
- id
- code
- name
假设属性表包含以下条目:
1 T Type1
2 R RType
3 G GType
以下是该课程的注释:
Class Attribute {
@Id
@Column(name = "ID")
protected long id;
@Column(name = "CODE", updatable = false)
protected String code;
@Column(name = "NAME", updatable = false)
protected String name;
}
所以我希望能够创建一个新的Item类,并为它提供一个填充了代码和名称的Attribute类。让hibernate查找属性的id,并将该id插入Item的attributeId列。
这些是我对Item的注释:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "item_seq")
@SequenceGenerator(name = "item_seq", sequenceName = "ITEM_SEQ",
allocationSize = 1)
@Column(name = "ID")
protected long id;
@OneToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
@JoinColumn(name="ATTRIBUTE_ID", insertable = true, updatable = true)
private Attribute attribute;
如何为Item类提供一个Attribute类,并填写代码和描述,并让它查找属性的id并将其分配给Item?
答案 0 :(得分:0)
您不需要明确设置属性ID,Hibernate会为您执行此操作。您只需要将Attribute
的实例(无论是新实例还是现有实例)设置为Item
实例,并保存该项。像这样的东西
Item item = new Item();
// if you want to use an existing attribute, fetch it from some DAO by id
Attribute att = session.get(Attribute.class, someId);
item.setAttribute(att);
// save item
session.save(item);