java - JPA/Hibernate - 对象不保存到数据库
问题描述
@Service
@Transactional
@RequiredArgsConstructor
public class HTMLParser {
public static final String link1;
public static final String link2;
public final String url;
private final @NonNull VillageRepository;
public void parseLink(String link, String selektor){
// 1. úroven - získej z hlavního odkazu všechny obce nutné k proklikání
try {
Document doc = Jsoup.connect(link).get();
Elements links = doc.select(selektor);
for (Element alink : links) {
System.out.println("text: " + alink.text());
parseLink(vytvořURL(alink.attr("href")), "div.sloupec3 a");
}
if(links.isEmpty()){
links = doc.select("dl.sloupec dd");
Village village = extractInformation(links);
obecRepository.saveAndFlush(obec);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void parseLink(String link, String selektor){
try {
Document doc = Jsoup.connect(link).get();
Elements links = doc.select(selektor);
for (Element alink : links) {
parseLink(createURL(alink.attr("href")), "div.sloupec3 a");
}
if(links.isEmpty()){
links = doc.select("h4.navigace a");
Set<String> hiearchie = extractHiearchy(links);
Iterator<String> iterator = hiearchie.iterator();
links = doc.select("dl.sloupec dd");
Village village = extractInfo(links);
villageRepository.saveAndFlush(village );
}
} catch (IOException e) {
e.printStackTrace();
}
}
private Village extractInfo(Elements elements){
if(elements.size() != 13){
elements.add(3, new Element("<dd><span class=\"sede\">--- ---</span></dd>"));
}
Village village = new Village(Long.parseLong(elements.get(7).text()), elements.get(0).text(), elements.get(1).text(),
elements.get(2).text(), elements.get(3).text(), elements.get(5).text(), elements.get(6).text(),
elements.get(8).text(), getHours(elements.last()));
village.setEmails(extrahjZBloku(elements.get(9)));
village.setWWW(extrahjZBloku(elements.get(10)));
village.setPhones(extrahujTelefony(elements.get(11)));
village.setAccounts(extrahujÚčetAIBAN(elements.get(4)));
return village;
}
@Entity
@Getter
@Setter
public class Village {
public Village (){}
@Id
private long code;
@Column
private String type;
@Column(name = "name")
private String name;
@Column
private String adress;
@Column(name = "sec_adress")
private String secAdress;
@Column(name = "bank")
private String bank1;
@Column(name = "bankovní_spojení2")
private String bank2;
@Column
private String IBAN1;
@Column
private String IBAN2;
@Column
private String IC;
@Column
private String DIC;
@Column
private String shortcut;
@Column
private String email1;
@Column
private String email2;
@Column
private String email3;
@Column
private String email4;
@Column
private String www1;
@Column
private String www2;
@Column
private String www3;
@Column
private String www4;
@Column
private String telefon1;
@Column
private String telefon2;
@Column
private String telefon3;
@Column
private String telefon4;
@Lob
@Column(name = "hours")
private String hours;
}
public interface VillageRepository extends JpaRepository<Village, Long> {
}
我的问题是方法 parseLink 中的对象村没有保存到数据库中...什么也没有发生,甚至没有出现错误...当我尝试使用测试参数将该对象保存在 main 方法中时,它可以工作,但是不是我需要的地方...当我尝试在该方法中保存不同的东西时,什么也没有发生,所以问题一定出在方法 parseHTML 我猜谢谢您的帮助
PS:在 intelij 中,我可以看到创建的插入命令似乎没问题,但数据库中没有任何内容......
解决方案
我不知道您是如何真正分配到类中的,但是您的 JpaRepository 是否用注释 @Repository 装饰?
推荐阅读
- java - 出于好奇,是否可以初始化一个 0×1 数组?
- firefox-addon - 如何使用承诺和回调将 chrome 扩展移植到 Firefox 插件
- vbscript - 如何在 VBScript 中返回 ArrayList?
- python - 在列表中查找特定字符
- css - DIV/SPAN 标签未在 GRID 的最后一个完整显示
- spring-boot - 如何将 ConstraintViolationException 500 错误转换为 400 错误请求?
- python - Compare two dictionaries returned from REST framework using pytest
- postgresql - 如何通过层次结构连接加入同一张表?
- php - 为什么不保存到数据库,excel导入
- javascript - Ag-Grid setRowData 没有设置网格内的数据