对于大量使用Java注释的项目,是否对注释顺序有任何建议?从而统一团队中的代码风格.
考虑以下两种关系:
@Entity class Foo {
@Id id;
@ManyToMany
@JoinTable(name = "ATag",
joinColumns = @JoinColumn(name = "foo_id"),
inverseJoinColumns = @JoinColumn(name = "tag_id"))
Set<Tag> tags;
}
@Entity class Tag {
@Id Long id;
String name;
}
Run Code Online (Sandbox Code Playgroud)
连接表ATag没有对应的实体类.现在,我想要使用名为'tag1'的Tag获取所有Foo实例,是否可以仅使用Criteria?
子查询可能有用,但是,我不能为不存在的类ATag.class创建DetachedCriteria.
我想在程序启动时检查用户是否按下了SHIFT键.(这意味着,在程序启动之前按下SHIFT键)这是一个简单的控制台程序,与X无关.
这可能类似于Win32 GetKeyboardState()功能.
我想知道我是否可以这样做,以及如何直接访问终端,但没有任何利弊.
对于简单的字符串字段
@Entity
class Foo {
//1. @Basic(optional = false)
//2. @Column(length = 100, nullable = false)
String name;
}
Run Code Online (Sandbox Code Playgroud)
我需要使用@Column注释来限制名称的长度,但我对可以为空的属性感到困惑.虽然我正在使用其他注释@ManyToOne和@OneToMany那些使用optional属性,但我想@Basic(optional)用来保持大多数注释均匀.但我不能限制名称的长度@Basic.
那么,我应该在哪里注释可空属性,@Basic或者@Column?
编辑
简单地说,您更喜欢哪种形式:
表格1:
@Entity
class Foo {
@Basic(optional = false)
@Column(length = 100)
String name;
}
Run Code Online (Sandbox Code Playgroud)
表格2:
@Entity
class Foo {
@Column(length = 100, nullable = false)
String name;
}
Run Code Online (Sandbox Code Playgroud)
我个人喜欢Form 1,因为optional属性也被其他@ManyToOne注释使用,但是Form 2也很好,因为它是在单个注释中完成的.
编辑
阅读http://markmail.org/message/osod6rsauwbnkvya后,我@Basic.optional和之间有区别 …
运行了很长时间后,我在id字段中得到越来越多的漏洞.一些表的id是int32,id序列达到了它的最大值.一些Java源代码是只读的,因此我不能简单地将id列类型更改为int32to long,这会破坏API.
我想重新编号.这可能不是一个好的做法,但好或坏并不关心这个问题.我想重新编号,特别是那些很长的ID,如"61789238","548273826529524324".我不知道它们为什么这么长,但更短的ID也更容易手动处理.
但由于引用和约束,手动压缩ID并不容易.
PostgreSQL本身是否支持ID重新编号?或者是否有任何插件或维护工具?
也许我可以写一些存储过程?那将是非常好的,所以我可以每年安排一次.
我正在使用PrimeFaces(3.2),但问题与我认为的Chrome有关.
除非我打开Chrome调试窗口,否则一切正常.即,如果我关闭调试窗口,没有发生错误,根本没有异常(见下文,异常是try/catch-ed).
但是,如果我打开Chrome调试窗口并对网页执行某些操作,则调试程序会在以下位置暂停:
if ( !Sizzle.isXML( node ) ) {
try {
if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
var ret = matches.call( node, expr ); <----- Paused here.
// IE 9's matchesSelector returns false on disconnected nodes
if ( ret || !disconnectedMatch ||
// As well, disconnected nodes are said to be in a document
// fragment in IE 9, so check for that
node.document && node.document.nodeType !== 11 ) {
return ret; …Run Code Online (Sandbox Code Playgroud) 我无法控制基类的源代码,那么,如何在子类上使用标准序列化?
在此示例中,字段a根本没有序列化,但B是可序列化的:
// a.jar
class A {
int a;
}
Run Code Online (Sandbox Code Playgroud)
// b.jar
class B
extends A
implements Serializable {
int b;
}
public class HelloWorldApp {
public static void main(String[] args)
throws Exception {
B b = new B();
b.a = 10;
b.b = 20;
ByteArrayOutputStream buf = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(buf);
out.writeObject(b);
out.close();
byte[] bytes = buf.toByteArray();
ByteArrayInputStream _in = new ByteArrayInputStream(bytes);
ObjectInputStream in = new ObjectInputStream(_in);
B x = (B) in.readObject();
System.out.println(x.a);
System.out.println(x.b); …Run Code Online (Sandbox Code Playgroud) 例如,如果存在依赖关系:
a -> b
a -> c
b -> c
Run Code Online (Sandbox Code Playgroud)
我想删除依赖项a -> c,因为有a -> b -> c.
我知道可能存在一些不应该减少的强依赖性,但它与这个问题无关.
例:
In a.pom:
<dependencies>
<dependency>b</dependency>
<dependency>c</dependency>
</dependencies>
In b.pom:
<dependencies>
<dependency>c</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
预期结果:
In a.pom:
<dependencies>
<dependency>b</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud) 我正在使用M2E与eclipse集成maven.我的单元测试资源/目录中的引用属性文件.好吧,命令行test(mvn test)中的一切都很好.但是,在Eclipse中,找不到资源.
检查Java Build Path,在那里标记所有资源条目Excluded: **.(我认为它应该只排除.java / .class文件)然后,在删除排除模式后,修复了问题.
我不确定是否应该Excluded **手动删除所有,或者我可能没有正确使用M2E.
PS项目是由进口的Existing Maven Projects.