我有一个依赖项,我想在test范围内使用(因此它在运行单元测试时在类路径中),并且在runtime范围内(这样我可以在WAR/EAR /其他包装中包含它用于部署,但不影响依赖工件的传递依赖查找).
一个真实的例子是SLF4J的实现JAR(例如Logback).我希望它在运行测试时存在于类路径中,并且我希望它包含在我的WAR/EAR中,但我不希望项目依赖于我的项目将其包含在传递依赖项查找中.
我尝试使用,<scope>test,runtime</scope>但Maven 3发出警告:
[WARNING] 'dependencies.dependency.scope' for org.slf4j:jcl-over-slf4j:jar
must be one of [provided, compile, runtime, test, system] but is 'test,runtime'.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,声明依赖范围的正确方法是什么?
有没有办法可以忽略我本地工作副本中的文件而不污染svn属性?我不希望我的本地忽略模式(例如临时文件)被发布到存储库并导致repo有很多无用的信息.
就像在git中一样,我可以使用.git/info/exclude.SVN中有类似的方法吗?
让我们先忘掉Hibernate吧.假设我有两个表,A和B.两个事务正在更新这两个表中的相同记录,但是txn 1更新B然后更新A,而txn 2更新A然后更新B.这是一个典型的死锁示例.避免这种情况的最常见方法是预先定义获取资源的顺序.例如,我们应该更新表A然后B.
回到Hibernate.当我们在一个会话中更新大量实体时,一旦我刷新会话,不同实体的更改将为DB生成相应的插入/更新/删除语句.Hibernate是否有一些算法来决定实体之间的更新顺序?如果没有,Hibernate用于防止第1段中描述的死锁情况的方式是什么?
如果Hibernate维护订单,我怎么知道或控制订单?我不希望我的数据库中的显式更新与Hibernate冲突,并导致死锁.
例如,我有一个dev分支和一个stable分支.
如果我有樱桃采摘几个从承诺dev到stable.
有没有什么办法让Git的认识樱桃采摘提交的,并避免双合并,如果我以后合并,重订或摘樱桃的重叠范围,从dev回stable?(这是SVN中的基本合并跟踪功能)
如果我正在处理操作/事务类型的应用程序,我发现DDD很自然.但是,我总是以合理的方式处理报告类型的函数.
我正在讨论的报告不一定是报告生成,也是执行相对复杂查询的函数.(比如,给出交易者所做的所有订单的摘要,或显示具有特定股票的交易账户的账户摘要等).它们可以是与这些操作功能一起使用的一些查询或支持功能.
对于这样的函数,如果我们可以在SQL(或任何查询语言)中执行连接,获取我们感兴趣的列,并返回按摩结果集,这是很自然的.但是,使用DDD似乎不太顺利:我们需要一个额外的特殊存储库或者现有最相关的存储库返回一个特殊的"实体/值对象"(这是专门的结果集).这些特殊的"实体"实际上没有任何域意义.
如果我们想要使用有意义的域层,那么可能会从不同的存储库创建大量额外的查找,以及域或服务层中的大量聚合工作,这很容易导致可怕的性能下降.
我还想过为这类函数设置另一个"路径",它不会通过"DDD路径",有自己的方式从DB获取报告数据,组成显示结果.然而,它会使应用程序变得不必要地复杂化,更糟糕的是,我们提供了一个额外的路径,以便更习惯于传统的面向数据库开发的开发人员可能倾向于使用此路径,即使它不合适.
我认为这种情况很常见(通常一个大系统不会包含操作,还有报告和查询功能),我想知道人们如何处理它?
我是Haskell的新手,希望这个问题不傻.
我已经看到了很多例子,当我有一个列表时,我能够匹配并将列表的"组合元素"绑定到单个变量:
listSizeDesc :: [a] -> String
listSizeDesc [] = "Emtpy"
listSizeDesc (x:xs) = "Something inside"
Run Code Online (Sandbox Code Playgroud)
但是,我尝试做类似的事情:
foo :: Int -> String
foo 0 = "Zero"
foo (n - 1) = "next number is " ++ show n
Run Code Online (Sandbox Code Playgroud)
它不起作用.
在我看来,(n-1)和(x:xs)都描述了如何"创建"参数并将"组件"绑定到参数.List的匹配方式是为了便于递归而专门设计的吗?因为在我看来,这个匹配/参数绑定逻辑不适用于除(:)之外的其他函数.
我希望导入,更改,重建,测试和推送/签入我对此Github存储库中可用代码的更改
目前,我不希望为此目的使用任何IDE或插件.
我在我的Windows机器上安装了Maven,按照安装说明进行操作,如下所示:
C:\Documents and Settings\298790\My Documents\Downloads\seismichadoop-master>mvn
-X package
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 19:21:
28+0530)
Maven home: D:\Omkar\Development\Softwares\Tools\apache-maven-3.0.5
Java version: 1.6.0_20, vendor: Sun Microsystems Inc.
Java home: C:\Program Files\Java\jdk1.6.0_20\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from D:\Omkar\Development\Softwares\Tools\apache
-maven-3.0.5\conf\settings.xml
[DEBUG] Reading user settings from C:\Documents and Settings\298790\.m2\settings
.xml
[DEBUG] Using local repository at C:\Documents and Settings\298790\.m2\repositor
y
[DEBUG] …Run Code Online (Sandbox Code Playgroud) 我有一个使用Spring Data JPA的Spring Boot 1.3.M1 Web应用程序.对于乐观锁定,我正在做以下事情:
@Version private long version;.通过查看数据库表,我确认该字段正在递增.version也会发送该字段.version字段作为隐藏字段或其他内容接收.服务器端,获取实体的新副本,然后更新所需字段以及version字段.像这样:
User user = userRepository.findOne(id);
user.setName(updatedUser.getName());
user.setVersion(updatedUser.getVersion());
userRepository.save(user);
Run Code Online (Sandbox Code Playgroud)我希望在版本不匹配时抛出异常.但事实并非如此.谷歌搜索,我发现一些帖子说我们不能设置@Vesion附加实体的属性,就像我在上面的第三个语句中所做的那样.
所以,我猜我必须手动检查版本不匹配并自己抛出异常.这是正确的方法,还是我错过了什么?
我想通过向实体添加地址列表来扩展使用REST访问JPA数据的示例Person.所以,我添加了一个addresses带@OneToMany注释的列表:
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String firstName;
private String lastName;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Address> addresses = new ArrayList<>();
// get and set methods...
}
Run Code Online (Sandbox Code Playgroud)
这Address堂课非常简单:
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String street;
private String number;
// get and set methods...
}
Run Code Online (Sandbox Code Playgroud)
最后我添加了AddressRepository界面:
public interface AddressRepository extends PagingAndSortingRepository<Address, …Run Code Online (Sandbox Code Playgroud) 在我看来,以下两种映射方式之间几乎没有区别。这是一个基于@MapsIdjavadoc的示例:
// parent entity has simple primary key
@Entity
public class Employee {
@Id long empId;
...
}
// dependent entity uses EmbeddedId for composite key
@Embeddable
public class DependentId {
String name;
long empid; // corresponds to primary key type of Employee
}
@Entity
public class Dependent {
@EmbeddedId DependentId id;
...
@MapsId("empid") // maps the empid attribute of embedded id
@ManyToOne Employee emp;
}
Run Code Online (Sandbox Code Playgroud)
如果我将 Dependent 的映射更改为:
@Entity
public class Dependent {
@EmbeddedId DependentId id;
@ManyToOne …Run Code Online (Sandbox Code Playgroud)