我会尝试告诉你我的所有问题而不显示太多代码。我使用DropWizard,我试图了解如何使用我的mysql DB的hibernate
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "mobile", nullable = false)
private String mobile;
在上面的示例中,我有一个名为id的变量和另一个名为id的变量。 Id使用@Id进行注释。我需要知道的是如何以正确的方式注释移动设备,以便我可以使用与id一起正常工作的功能。
public Optional<Device> findById(Long id) {
return Optional.fromNullable(get(id));
}
这是我用ID查找的功能。但我不能使用类似的移动功能。我会得到一个异常抛出告诉我一个函数除了很长但得到一个字符串。 所以我的猜测是我注释了手机错误。但我对我应该尝试的内容一无所知。
添加更多信息
public Optional<Device> findByMobile(String mobile) {
return Optional.fromNullable(get(mobile));
}
这是我想要的功能。但我得到以下例外:
org.hibernate.TypeMismatchException:为类com.mobiles.core.Device提供了错误类型的id。预期:类java.lang.Long,得到类java.lang.String
答案 0 :(得分:0)
好的,问题是hibernate的方法get接收实体的id(see the api),在你的情况下id是long类型,这就是方法抛出异常的原因。因此,您无法使用移动属性获取方法
您可以使用hql或criteria来使用属性mobile作为过滤器加载实体。