Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Pojo中获取数据库行而不使用JOOQ代码生成?_Java_Pojo_Jooq - Fatal编程技术网

Java 如何在Pojo中获取数据库行而不使用JOOQ代码生成?

Java 如何在Pojo中获取数据库行而不使用JOOQ代码生成?,java,pojo,jooq,Java,Pojo,Jooq,我试图在不生成代码的情况下使用JOOQ。我有一个像这样的dao类 public class FilesDao { public List<FilePojo> getAllFiles() { DataSource dataSource = DataSourceFactory.getTestiDataSource(); List<FilePojo> filePojos = new ArrayList<>(); try (Connectio

我试图在不生成代码的情况下使用JOOQ。我有一个像这样的dao类

public class FilesDao { 
public List<FilePojo> getAllFiles() {
    DataSource dataSource = DataSourceFactory.getTestiDataSource();
    List<FilePojo> filePojos = new ArrayList<>();
    try (Connection con = dataSource.getConnection()) {
        DSLContext create = DSL.using(con, SQLDialect.MARIADB);
        filePojos = create.select(field("tiedosto.id"), field("tiedosto.nimi"), field("tiedosto.koko_tavua"),
                field("tiedosto.sisalto"), field("tiedosto.hlo_id"))
                .from(table("tiedosto"))
                .where(field("minioupload").eq((byte) 0))
                .fetch().into(FilePojo.class);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return filePojos;
   }
}
import javax.persistence.Column;
import javax.persistence.Table;

@Table(name="tiedosto")
public class FilePojo {

@Column(name = "id")
private Integer id;

@Column(name = "hlo_id")
private Integer customerId;

@Column(name = "koko_tavua")
private Integer fileSize;

@Column(name = "nimi")
private String fileName;

@Column(name = "sisalto")
private byte[] content;}
//Getters setters omitted
public class App {
public static void main(String[] args) {
    FilesDao mydao = new FilesDao();
    List<FilePojo> myList = mydao.getAllFiles();
    for (FilePojo filePojo : myList) {
        System.out.println("==========================================" + "\n" +
                filePojo.getId() + " " +
                filePojo.getCustomerId() + " " +
                filePojo.getFileName() + " " +
                filePojo.getFileSize() + " " +
                filePojo.getContent() + " " +
                "==========================================");
    }
  }
}
当我尝试使用这样的主方法从表中读取时

public class FilesDao { 
public List<FilePojo> getAllFiles() {
    DataSource dataSource = DataSourceFactory.getTestiDataSource();
    List<FilePojo> filePojos = new ArrayList<>();
    try (Connection con = dataSource.getConnection()) {
        DSLContext create = DSL.using(con, SQLDialect.MARIADB);
        filePojos = create.select(field("tiedosto.id"), field("tiedosto.nimi"), field("tiedosto.koko_tavua"),
                field("tiedosto.sisalto"), field("tiedosto.hlo_id"))
                .from(table("tiedosto"))
                .where(field("minioupload").eq((byte) 0))
                .fetch().into(FilePojo.class);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return filePojos;
   }
}
import javax.persistence.Column;
import javax.persistence.Table;

@Table(name="tiedosto")
public class FilePojo {

@Column(name = "id")
private Integer id;

@Column(name = "hlo_id")
private Integer customerId;

@Column(name = "koko_tavua")
private Integer fileSize;

@Column(name = "nimi")
private String fileName;

@Column(name = "sisalto")
private byte[] content;}
//Getters setters omitted
public class App {
public static void main(String[] args) {
    FilesDao mydao = new FilesDao();
    List<FilePojo> myList = mydao.getAllFiles();
    for (FilePojo filePojo : myList) {
        System.out.println("==========================================" + "\n" +
                filePojo.getId() + " " +
                filePojo.getCustomerId() + " " +
                filePojo.getFileName() + " " +
                filePojo.getFileSize() + " " +
                filePojo.getContent() + " " +
                "==========================================");
    }
  }
}
公共类应用程序{
公共静态void main(字符串[]args){
FilesDao mydao=newfilesdao();
List myList=mydao.getAllFiles();
for(FilePojo FilePojo:myList){
System.out.println(“=========================================================================”+“\n”+
filePojo.getId()+“”+
filePojo.getCustomerId()+“”+
filePojo.getFileName()+“”+
filePojo.getFileSize()+“”+
filePojo.getContent()+“”+
"==========================================");
}
}
}
结果如下


我可以看到SQL查询运行良好,列出了所有匹配的行,但pojo返回空值。我做错了什么?有人能给我指一下正确的方向吗?我真的非常感谢您的帮助。

我还不确定这是否是一个问题。当您可能应该使用时,您正在使用。当你写作时

字段(“tiedosto.id”)
然后,jOOQ(可能错误地)认为您的列名为
`tiedosto.id`
,名称中有一个句点。当它确实应该被限定为
`tiedosto`.`id`
时。有几个可能的修复方法:

继续使用普通SQL模板API 但是,不要限定名称:

字段(“id”)
使用标识符构建API
字段(名称(“tiedosto”、“id”))
使用代码生成器
当然,这应该是您的首选。

非常感谢您的回答。删除表名成功了。我通常更喜欢代码生成器,我只是想和jooq玩一下。