小编Tri*_*cke的帖子

Hibernate返回BigIntegers而不是long

这是我的发件人实体

@Entity
public class Sender {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long senderId;
...


...

    public long getSenderId() {
            return senderId;
    }

    public void setSenderId(long senderId) {
            this.senderId = senderId;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试执行以下查询时:

StringBuilder query = new StringBuilder();
query.append("Select sender.* ");
query.append("From sender ");
query.append("INNER JOIN coupledsender_subscriber ");
query.append("ON coupledsender_subscriber.Sender_senderId = sender.SenderId ");
query.append("WHERE coupledsender_subscriber.Subscriber_subscriberId = ? ");

SQLQuery q = (SQLQuery) sessionFactory.getCurrentSession().createSQLQuery(query.toString());
q.setResultTransformer(Transformers.aliasToBean(Sender.class));
q.setLong(0, subscriberId);

return q.list();
Run Code Online (Sandbox Code Playgroud)

发生以下错误:

错误:org.hibernate.property.BasicPropertyAccessor - HHH000123:类中的IllegalArgumentException:be.gimme.persistence.entities.Sender,属性的setter方法:senderId

错误:org.hibernate.property.BasicPropertyAccessor - HHH000091:预期类型:long,实际值:java.math.BigInteger

这是因为类Sender中的senderId实际上是一个long而不是BigInteger(由Hibernate返回).

我想知道在这样的情况下最佳做法是什么,我应该使用BigIntegers作为id(看起来有点矫枉过正)?

我应该手动将查询结果转换为类Sender的对象(那会很糟糕)?或者我可以让Hibernate返回longid而不是 …

java spring hibernate biginteger long-integer

14
推荐指数
3
解决办法
2万
查看次数

Google云构建器 - Java版本

我正在尝试使用Google云构建器创建构建管道.我开始时非常简单:"mvn clean deploy",我使用的cloudbuild.yaml看起来像这样:

steps:
  # Build the application with maven
  - name: 'gcr.io/cloud-builders/mvn'
    args: ['clean', 'deploy']
Run Code Online (Sandbox Code Playgroud)

这似乎工作,maven部署已启动,但最终我在编译时遇到错误:

Step #1: [ERROR] Failed to execute goal org.apache.maven.plugins:maven- 
compiler-plugin:3.1:compile (default-compile) on project codex-core-model: 
Fatal error compiling: invalid target release: 1.9 -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

我的项目是用java 9编写的,所以我必须使用jdk9编译它.显然mvn构建器使用jdk8,我使用"mvn --version"检查确定性,并得到以下结果:

Step #1: Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017- 
04-03T19:39:06Z)
Step #1: Maven home: /usr/share/maven
Step #1: Java version: 1.8.0_171, vendor: Oracle Corporation
Step #1: Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Step #1: Default locale: en_US, platform encoding: ANSI_X3.4-1968
Step #1: OS …
Run Code Online (Sandbox Code Playgroud)

java maven google-cloud-platform

7
推荐指数
1
解决办法
716
查看次数