我想知道如果它在数据库中找到已经存在的条目,那么该{save}方法CrudRepository是否进行更新:
@Repository
public interface ProjectDAO extends CrudRepository<Project, Integer> {}
@Service
public class ProjectServiceImpl {
@Autowired private ProjectDAO pDAO;
public void save(Project p) { pDAO.save(p); } }
Run Code Online (Sandbox Code Playgroud)
因此,如果我在已注册的条目上调用该方法,它会在找到更改的属性时更新它吗?
谢谢.
我有4个实体:
与companyContract有关的个人资料:
@OneToMany(fetch = FetchType.EAGER, mappedBy = "profile", cascade = { CascadeType.ALL })
@Fetch(value = FetchMode.SUBSELECT)
@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
private List<CompanyContract> companyContracts;
Run Code Online (Sandbox Code Playgroud)
CompanyContract:与时间表有关系:
@OneToMany(mappedBy = "companyContract", cascade = { CascadeType.ALL },orphanRemoval = true, fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
private List<Timesheet> timesheets;
@ManyToOne
@JoinColumn(name = "IDPROFILE")
private Profile profile;
Run Code Online (Sandbox Code Playgroud)
时间表与发票有关系:
@OneToMany(mappedBy = "timesheet", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
private List<Invoice> invoices;
@ManyToOne
@JoinColumn(name = "IDCONTRACT") …Run Code Online (Sandbox Code Playgroud) 我想将这个Java转换LocalDate为JavaScript Date:
{
"date": {
"year": 2016,
"month": "NOVEMBER",
"dayOfMonth": 15,
"monthValue": 11,
"dayOfWeek": "TUESDAY",
"era": "CE",
"dayOfYear": 320,
"leapYear": true,
"chronology": {
"id": "ISO",
"calendarType": "iso8601"
}
}
Run Code Online (Sandbox Code Playgroud) 要从 HTML 文件生成 PDF,我想使用 selenium Chrome 驱动程序。
我用命令行试了一下:
chrome.exe --headless --disable-gpu --print-to-pdf file:///C:invoiceTemplate2.html
Run Code Online (Sandbox Code Playgroud)
它工作得很好,所以我想用 JAVA 来做到这一点,这是我的代码:
System.setProperty("webdriver.chrome.driver", "C:/work/chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless", "--disable-gpu", "--print-to-pdf",
"file:///C:/invoiceTemplate2.html");
WebDriver driver = new ChromeDriver(options);
driver.quit();
Run Code Online (Sandbox Code Playgroud)
服务器启动没有问题,但 chrome 使用多个选项卡打开,其中包含我在选项中指定的参数。
有什么解决办法吗?谢谢。
我正在尝试使用 chrome headless print to pdf 选项在 ubuntu 中打印一些 pdf 文件,这是我的命令行:
google-chrome --headless --disable-gpu --print-to-pdf http://www.google.com
Run Code Online (Sandbox Code Playgroud)
现在,如果我像这样运行它,它会完美运行并生成文件。
但是当我在 --print-to-pdf 之后添加文件名时:
google-chrome --headless --disable-gpu --print-to-pdf gen.pdf http://www.google.com
Run Code Online (Sandbox Code Playgroud)
发生错误:
[1213/020159.194304:ERROR:headless_shell.cc(605)] Open multiple tabs is only supported when remote debugging is enabled.
Run Code Online (Sandbox Code Playgroud)
有什么解决办法吗?谢谢。
我有三张桌子,我想加入它们,这让我发疯。
表:任务 项目 用户
它们之间都具有多对多关系:就像项目有多个用户,反之亦然,任务有多个用户,反之亦然,项目和用户也是如此。
我正在尝试找到一种在 JPA 和 Hibernate 中实现这一点的方法,我有 2 个选择: ** 1 ** 像这样加入 3 个实体:
项目:
@ManyToMany(fetch = FetchType.EAGER,
cascade =
{
CascadeType.DETACH,
CascadeType.MERGE,
CascadeType.REFRESH,
CascadeType.PERSIST
},
targetEntity = User.class)
@JoinTable(name = "Collaborators",
joinColumns = @JoinColumn(name = "ProjectFk", referencedColumnName = "id", updatable=false, nullable=false),
inverseJoinColumns = @JoinColumn(name = "UserFk", referencedColumnName = "id", updatable=false, nullable=false))
private Set<User> users = new HashSet<>();
Run Code Online (Sandbox Code Playgroud)
用户:
@ManyToMany(fetch = FetchType.EAGER,
cascade =
{
CascadeType.DETACH,
CascadeType.MERGE,
CascadeType.REFRESH,
CascadeType.PERSIST
},
targetEntity …Run Code Online (Sandbox Code Playgroud) 我有一个实体用户:
@Entity
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private Long id;
public Long getId() {
return id;
}
...}
Run Code Online (Sandbox Code Playgroud)
我正在尝试从数据库的任务中删除用户:
@Modifying
@Query("DELETE FROM Collaborator c WHERE c.user = :userId AND c.task = :taskId")
void deleteUserFromTask(@Param("userId") Long userId, @Param("taskId") Long taskId);
Run Code Online (Sandbox Code Playgroud)
这是用户和协作者(我要从中删除的表)之间的关系:在用户中
@JsonIgnore
@OneToMany(mappedBy="user", fetch = FetchType.EAGER)
private Set<Collaborator> collaborators = new HashSet<>();
Run Code Online (Sandbox Code Playgroud)
在合作者中
@ManyToOne(cascade = {CascadeType.MERGE,
CascadeType.DETACH,
CascadeType.REFRESH },
fetch = FetchType.EAGER)
@JoinColumn(name …Run Code Online (Sandbox Code Playgroud) 我有两个这样的实体:
public class Client {
...
@OneToMany(mappedBy = "client", cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.REMOVE },orphanRemoval = true, fetch=FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
private List<CompanyContract> companyContracts;
...
}
Run Code Online (Sandbox Code Playgroud)
公司合同:
public class CompanyContract {
...
@ManyToOne
@JoinColumn(name = "IDCLIENT")
private Client client;
...
}
Run Code Online (Sandbox Code Playgroud)
我想删除这样的 companyContract :
client.getCompanyContracts().remove(companyContract)
client = clientService.updateClient(client);
Run Code Online (Sandbox Code Playgroud)
但是删除过程没有发生
我究竟做错了什么 ?
编辑
这是我的 DAO 中的 updateClient 方法:
@Override
@Transactional
public Client updateClient(Client client) {
return entityManager.merge(client);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用这种方法从我的DAO中的数据库中检索一些数据:
@Override
@Transactional
public List<History> findLastHistoriesByCount(int gHistoriesCount) {
List<History> result = new ArrayList<History>();
result = entityManager
.createQuery(
"SELECT h FROM History h ORDER BY h.eventDate DESC",
History.class).setMaxResults(gHistoriesCount).getResultList();
return result;
}
Run Code Online (Sandbox Code Playgroud)
这是我的历史课:
public class History implements Serializable {
...
@ManyToOne
@JoinColumn(name = "ID_CONTRACT_HISTORY", nullable = true)
private ContractHistory contractHistory;
@ManyToOne
@JoinColumn(name = "ID_SALARY_HISTORY", nullable = true)
private SalaryHistory salaryHistory;
...
}
Run Code Online (Sandbox Code Playgroud)
但我面临着这个例外:
javax.persistence.EntityNotFoundException:无法找到ID为108的com.xxx.model.ContractHistory
虽然我确定我在表ContractHistory的数据库中有该行
编辑
我已经看过带有@NotFound注释的解决方案了,我不想要它,因为它对我来说只是一个旁路,因为我的数据在那里!我想撤退。
编辑2 ** ContractHistory:**
public class ContractHistory extends implements Serializable {
private static final …Run Code Online (Sandbox Code Playgroud)