使用session.load()
或session.get()
或任何其他方法org.hibernate.session
,是有可能得到基于独特的列,而不是PK列值处于休眠的纪录?
我的要求是,我需要得到基于独特的列值的记录,而不是主键。
它就像我不希望使用的标准API。 我需要使用session.get或负载样的方法。 你提到的答案是做搜索。 但我要求得到基于唯一键的单个记录。 说的如。 我的类水果有一个PK列ID和唯一列fruitID这是唯一的关键。 我想要检索基础上,fruitID而不是ID的唯一记录。 例如。 果果=(水果)session.get(Fruit.class,fruitID); 这里fruitID是水果类的唯一列。
你的意思是这样的吗?
Criteria criteria = session.createCriteria(User.class);
criteria.add( Restrictions.eqProperty("uniqueField", "value") )
List results = criteria.list();
Object myObj = results.get(0);
检查休眠手册有关标准的详细信息
你可能会使用一个现有的表,你只需要查找的行,也许做简单的修改有所帮助,如果你不需要的主键
移动@Id注释以独特的关键领域,离开了主键或使其正常列
这一点,问题就出现会更复杂的操作,但是你可以定义一个第二实体的工作,如果你只是做查询或编辑该表只是做了查找,如果以后需要通过主键来执行主键操作重新查找
@Entity
class RealEntity implements Serializable {
@Id
private int id;
@Column(...)
private String uniqueSecondKey;
...
}
@Entity
class LookupEntity implements Serializable {
@Column()
private int id;
@Id
@Column(...)
private String uniqueSecondKey;
...
}
文章来源: How to retrieve record in Hibernate using Unique key instead of Primary Key