Hibernate没有查找属性值

时间:2015-05-19 14:47:07

标签: java hibernate annotations

使用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?

1 个答案:

答案 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);