休眠和持久化。注释错误

时间:2014-07-01 14:08:00

标签: java hibernate persistence

我会尝试告诉你我的所有问题而不显示太多代码。我使用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

1 个答案:

答案 0 :(得分:0)

好的,问题是hibernate的方法get接收实体的id(see the api),在你的情况下id是long类型,这就是方法抛出异常的原因。因此,您无法使用移动属性获取方法

您可以使用hql或criteria来使用属性mobile作为过滤器加载实体。