我正在使用hibernate 3并尝试删除数据库中的记录,并且删除无法正常工作.模式hibernate正在反对(在伪代码中):
create table Employer(
employer_id number(12) primary key,
employer_name varchar2(50)
);
create table Employee(
employee_id number(12) primary key,
employee_name varchar2(50),
employer_id number(12) foreign key references employer.employer_id not null
);
create table Employee_Roles(
role_id number(12) primary key,
employee_id number(12) foreign key references employee.employee_id not null,
role varchar2(50)
);
Run Code Online (Sandbox Code Playgroud)
我的hibernate类映射看起来像:
@Entity
public class Employer{
@Id
@Column(name = "EMPLOYER_ID")
private long id;
@Column
private String name;
@OneToMany(targetEntity = Employee.class, fetch = FetchType.EAGER)
@JoinColumn(name = "employer_id")
@Cascade(CascadeType.ALL)
private Set<Employee> employees;
}
@Entity
public …Run Code Online (Sandbox Code Playgroud) 我正在为一个实现暴露接口的类编写(junit)单元测试,其方法如下:
public Set<Setting> getUserSettings();
public Set<Setting> getOrganizationSettings();
public Set<Setting> getDefaults();
public Set<Setting> getAllSettings();
Run Code Online (Sandbox Code Playgroud)
从特定层获取设置的方法从各个位置执行IO以检索其结果.getAllSettings()返回所有级别的所有设置的单个集合,其中"最高"级别具有首选项(即,如果默认和用户级别中存在设置,则将使用用户级别中的设置.
我已经为getUserSettings(),getOrganizationSettings(),getDefaults()编写了单元测试,用Mocked对象模拟了IO操作.
getAllSettings()的实现看起来像
public Set<Setting> getAllSettings(){
Set<Setting> defaults = getUserSettings();
Set<Setting> custom = getOrganizationSettings();
Set<Setting> undefined = getDefaults();
//perform some sorting and business logic
//return fully sorted set
}
Run Code Online (Sandbox Code Playgroud)
我的问题在于如何对getAllSettings()方法进行单元测试.我是否对用户/组织/默认设置方法使用的所有下游资源调用使用模拟(使用easymock/powermock)?似乎会有更清洁/更好/更简单的方法来做到这一点.
我目前正在开发一个项目,将一些遗留的jdbc select语句转移到使用Hibernate及其标准api.
两个相关的表列和SQL查询如下所示:
-QUERIES-
primaryId
-QUERYDETAILS-
primaryId
linkedQueryId -> Foreign key references queries.primaryId
value1
value2
select *
from queries q
where q.primaryId not in (SELECT qd.linkedQueryId
FROM querydetails qd
WHERE (qd.value1 LIKE 'PROMPT%'
OR qd.value2 LIKE 'PROMPT%'));
Run Code Online (Sandbox Code Playgroud)
我的实体关系如下:
@Table("queries")
public class QueryEntity{
@Id
@Column
private Long primaryId;
@OneToMany(targetEntity = QueryDetailEntity.class, mappedBy = "query", fetch = FetchType.EAGER)
private Set<QueryDetailEntities> queryDetails;
//..getters/setters..
}
@Entity
@Table(name = "queryDetails")
public class QueryDetailEntity {
@Id
@Column
private Long primaryId;
@ManyToOne(targetEntity = QueryEntity.class)
private QueryEntity query; …Run Code Online (Sandbox Code Playgroud) 我有一个SearchService使用算法查询数据库和恢复结果.根据调用者对服务的要求,可以返回几种不同的格式.这些格式是:
目前我的SearchService看起来像:
public interface SearchService {
public List<People> searchPeopleReturnEntity(SearchRequest request);
public List<Long> searchPeopleReturnId(SearchRequest request);
public List<SearchResult> searchPeopleReturnSearchResult(SearchRequest request);
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找有关此问题的最佳做法的建议.目前,命名惯例似乎相当笨重,我相信有一个比我现在更好的解决方案.
我正在研究遗留应用程序的替换应用程序.由于遗留应用程序的某些设计限制,"附件"在我们的数据库中存储为String路径(通常是存储在Windows共享驱动器上的文件).然后,遗留应用程序可以通过打开Windows命令shell并执行给定路径来"打开"附件.
传统(Oracle Forms)应用程序正在被基于JSF的J2EE Web应用程序逐步淘汰.新应用程序需要能够以某种方式"打开"或链接到这些传统附件.这甚至可能吗?我试图使用file:// URL,但使用它们有很多警告.它们只能在IE中的远程主机上工作,firefox/chrome(以及我认为的其他现代浏览器)会阻止本地文件URL.
仅在IE上工作是可以用于此特定功能的东西.我进一步遇到了带空格的文件路径问题.出于某种原因,如果IE遇到一个带有空格的文件路径,比如说
C:\Documents and Settings\user123\My Documents\testing\someFile.txt
Run Code Online (Sandbox Code Playgroud)
它拒绝打开该链接.浏览器会自动将空格('')替换为其编码'%20'的URL.
我尝试的相关链接如下:
<a href="file:///C:\Documents and Settings\user123\My Documents\testing\someFile.txt">link</a>
Run Code Online (Sandbox Code Playgroud)
有什么简单的东西,我错过了吗?或者有更简单的方法吗?
我不太清楚要标记什么,所以请随意重新标记.