- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我参与了一个 Spring Boot 项目,该项目读取 CSV 文件并将数据保存在 H2 数据库中。
下面提供了 CSV 文件 -
authors.csv
email;firstname;lastname
null-walter@echocat.org;Paul;Walter
null-mueller@echocat.org;Max;Mülle
书籍.csv
title;isbn;bookAuthors;description
Ich helfe dir kochen. Das erfolgreiche Universalkochbuch mit großem Backteil;5554-5545-4518;null-walter@echocat.org,boby-walter@echocat.org;Auf der Suche nach einem Basiskochbuch steht man heutzutage vor einer Fülle von Alternativen. Es fällt schwer, daraus die für sich passende Mixtur aus Grundlagenwerk und Rezeptesammlung zu finden. Man sollte sich darüber im Klaren sein, welchen Schwerpunkt man setzen möchte oder von welchen Koch- und Backkenntnissen man bereits ausgehen kann.
杂志.csv
title;isbn;bookAuthors;publishedAt
Beautiful cooking;5454-5587-3210;null-walter@echocat.org;21.05.2011
我编写 POJO 文件,
@Entity
@Table(name = "Author")
public class Author implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
// email;firstname;lastname
@Column
private String email;
@Column
private String firstname;
@Column
private String lastname;
@ManyToMany(mappedBy = "bookAuthors", fetch = FetchType.LAZY)
List<Book> books;
@ManyToMany(mappedBy = "bookAuthors", fetch = FetchType.LAZY)
List<Magazine> magazines;
public Author() {
}
public Author(String email, String firstname, String lastname) {
this.email = email;
this.firstname = firstname;
this.lastname = lastname;
}
}
@Entity
@Table(name = "Book")
public class Book implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// title;isbn;bookAuthors;description
@Column
private String title;
@Column
private String isbn;
@Column(length = 5000)
private String description;
@ElementCollection
@Column(name="bookAuthors")
List<String> bookAuthors;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "book_authors",
joinColumns = @JoinColumn(name = "book_id"),
inverseJoinColumns = @JoinColumn(name = "author_id"))
List<Author> authors;
public Book() {
}
public Book(String title, String isbn, String description) {
this.title = title;
this.isbn = isbn;
this.description = description;
}
}
@Entity
@Table(name = "Magazine")
public class Magazine implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// title;isbn;bookAuthors;publishedAt
@Column
private String title;
@Column
private String isbn;
@ElementCollection
@Column(name = "bookAuthors")
List<String> bookAuthors;
@Column
private String publishedAt;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "magazine_authors",
joinColumns = @JoinColumn(name = "magazine_id"),
inverseJoinColumns = @JoinColumn(name = "author_id"))
List<Author> authors;
public Magazine() {
}
public Magazine(String title, String isbn, String publishedAt) {
this.title = title;
this.isbn = isbn;
this.publishedAt = publishedAt;
}
}
提供了存储库和服务文件的示例,
@Repository
public interface BookRepository extends JpaRepository<Book, Long> {
@Query(value = "SELECT * FROM book WHERE book.isbn=:isbn",nativeQuery = true)
Optional<Book> findBookByIsbn(String isbn);
}
服务文件,
@Service
public class BookService {
private BookRepository repository;
@Autowired
public void setBookRepository(BookRepository BookRepository) {
this.repository = BookRepository;
}
@Transactional(rollbackFor = Exception.class)
public Optional<Book> findById(Long id) {
return repository.findById(id);
}
@Transactional(rollbackFor = Exception.class)
public List<Book> findAll() {
return (List<Book>) repository.findAll();
}
@Transactional(rollbackFor = Exception.class)
public Book save(Book Product) {
return repository.save(Product);
}
@Transactional
public <S extends Book> List<Book> saveAll(List<Book> students) {
List<Book> result = new ArrayList<>();
if (students == null) {
return result;
}
for (Book student : students) {
result.add(repository.save(student));
}
return result;
}
@Transactional(rollbackFor = Exception.class)
public void deleteAll() {
repository.deleteAll();
}
@Transactional(rollbackFor = Exception.class)
public Optional<Book> findBookByIsbn(String isbn){
return repository.findBookByIsbn(isbn);
}
}
当我尝试保存书籍数据时,我编写了代码,
String bookFilePath = "/Users/Chaklader/IdeaProjects/Publications/src/main/resources/data/books.csv";
List<Book> books = new BookCsvFileReader(authorService).readBooksCsvData(bookFilePath);
bookService.saveAll(books);
我收到错误,
Caused by: org.h2.jdbc.JdbcSQLException: Data conversion error converting "'null-walter@echocat.org' (AUTHOR: ID BIGINT NOT NULL)"; SQL statement:
insert into book_book_authors (books_id, book_authors) values (?, ?) [22018-196]
如何纠正它?
更新
BookCsvFileRead.java
public class BookCsvFileReader extends CsvFileReader {
private AuthorService authorService;
public BookCsvFileReader(AuthorService service) {
this.authorService = service;
}
public List<Book> readBooksCsvData(String fileName) throws IOException {
List<Book> books = new ArrayList<>();
try {
List<List<String>> lines = CsvFileReader.readCsvFile(fileName);
lines.remove(0);
for (List<String> line : lines) {
String title = line.get(0);
String isbn = line.get(1);
String[] emails = line.get(2).split(",");
List<String> bookAuthors = new ArrayList<>();
for (String email : emails) {
bookAuthors.add(email);
}
String description = line.get(3);
Book book = new Book(title, isbn, description, bookAuthors);
book.setBookAuthors(bookAuthors);
books.add(book);
}
}
//
catch (IOException e) {
e.printStackTrace();
}
return books;
}
}
最佳答案
根本问题是 CSV 文件使用电子邮件地址字符串作为作者 ID,但作者实体类被建模为使用数字序列 ID。我将代码修改如下,
@Entity
@Table(name = "Author")
public class Author implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "email")
private String email;
// email;firstname;lastname
@Column
private String firstname;
@Column
private String lastname;
@ManyToMany(mappedBy = "bookAuthors", fetch = FetchType.LAZY)
List<Book> books;
@ManyToMany(mappedBy = "bookAuthors", fetch = FetchType.LAZY)
List<Magazine> magazines;
public Author() {
}
public Author(String email, String firstname, String lastname) {
this.email = email;
this.firstname = firstname;
this.lastname = lastname;
}}
因此,代码现在可以正确读取和保存 CSV 文件中的数据。
关于java - 由 : org. h2.jdbc.JdbcSQLException 引起:数据转换错误转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58646398/
我正在尝试从par_iter()内部捕捉到 panic ,并继续执行par_iter块之后的操作。 如果我有这个,我会正确地获得一切,并且不会出现 panic : let dog: Dog = Dog
我可以假设从 JDK 类加载机制抛出的每个 NoClassDefFoundError 总是在堆栈跟踪中将 ClassNotFoundException 作为原因吗? 另外,NoClassDefFoun
我有下面的程序 package com; import java.io.PrintStream; import java.net.URL; import java.net.UR
我有一些由另一组人编写的简单代码(目前不可用),它引用了我得到的一些 jar 文件。当我编译代码时,一切都构建得很好,但是一旦代码尝试创建在其中一个 jar 文件中定义的类的实例,我就会收到 java
我正在尝试按照 https://github.com/airbrake/airbrake-django#manually-sending-errors-to-airbrake 上的示例进行操作手动向
我不确定为什么这是递归的。 jTable1.getModel().addTableModelListener(new TableModelListener() { public void table
我按照 https://github.com/cloudfoundry/vcap 上的自述文件进行操作 它应该工作正常... 但我得到了这样的错误: 有谁知道发生了什么? 我在 Ubuntu10.04
我只是想知道当你有 UI-Router 的空白页面时,有人知道如何调试情况。 (当然,控制台没有任何错误) 通过为路由器事件执行 console.log(取自 here),我发现它进入了正确的状态,但
我们的网站上有一个问题,一些 Firefox 用户在访问我们的网站时会收到“错误请求”消息(仅此而已,只是“错误请求”字样!) 这似乎是由于 google 跟踪 cookie 损坏,可能是 __utm
在使用guard-rspec在Rails 4项目中运行guard时,在vim中打开/关闭文件时偶尔会看到以下错误。我试过升级/降级guard,guard-rspec,pry和其他没有运气的库。 rub
今天我在编写程序时遇到了这个错误。 Caused by:java.lang.ClassCastException: org.cubeville.blocks.CrossedBlockBrush can
我在执行应用程序时遇到空指针异常,但我不确定原因。问题发生在线路上: task.execute(""); 但我不确定为什么会出现空指针异常。 (我已经验证我有互联网连接,并且它所连接的 XML
嗨,我有一个 java 应用程序,我正在尝试使用它写入 tempDir,但我仍然遇到以下异常。我承认我对编写文件不太了解,所以希望我缺少一些小东西。 Caused by: java.io.FileNo
我不明白为什么会发生这种情况。我对其他问题做了一些研究,发现使用 for 循环时无法修改集合。但是,我正在使用迭代器,为什么它不起作用? int counter = 0; int otherC
目前我正在使用 OSX Server (Yosemite) 来托管一堆 PHP 应用程序,其中一些应用程序在网站文档根目录下有一个子目录用于子域。自更新到 Yosemite 版本的 OSX Serve
SqlCommand objsql = new SqlCommand(); . . objsql.Parameters.AddWithValue("@Param1", DBNull.Value); .
当我尝试将“对象”添加到数据库然后将其显示到 TableView 时,它显示 UnsupportedOperationException 。一切都很好,直到我将此代码添加到“public void i
我收到以下错误日志: 05-29 20:57:29.886: D/AndroidRuntime(359): Shutting down VM 05-29 20:57:29.896: W/dalvikv
我有两个项目,第一个是Ejb3项目,名称是SessionBean,另一个是java项目,名称是SessionBeanClient。对于 IDE,我使用 eclipse indigo。我已经完成了代码,
我有一个使用表单成员身份验证的 ASP.NET Web 应用程序。我们最近进行了渗透测试,标记的一个问题是窃取用户帐户的能力。如果 .ASPXAUTH cookie 值是在注销之前从用户复制的,用户可
我是一名优秀的程序员,十分优秀!