对于某些不是标识符/不是复合标识符一部分的列,是否可以使用DB序列?
我正在使用hibernate作为jpa提供程序,并且我有一个表有一些生成值的列(使用序列),尽管它们不是标识符的一部分.
我想要的是使用序列为实体创建一个新值,其中序列的列不是主键的一部分:
@Entity
@Table(name = "MyTable")
public class MyEntity {
//...
@Id //... etc
public Long getId() {
return id;
}
//note NO @Id here! but this doesn't work...
@GeneratedValue(strategy = GenerationType.AUTO, generator = "myGen")
@SequenceGenerator(name = "myGen", sequenceName = "MY_SEQUENCE")
@Column(name = "SEQ_VAL", unique = false, nullable = false, insertable = true, updatable = true)
public Long getMySequencedValue(){
return myVal;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我这样做:
em.persist(new MyEntity());
Run Code Online (Sandbox Code Playgroud)
将生成id,但该mySequenceVal属性也将由我的JPA提供程序生成.
只是为了说清楚:我希望Hibernate为mySequencedValue属性生成值.我知道Hibernate可以处理数据库生成的值,但是我不想使用触发器或除Hibernate之外的任何其他东西来为我的属性生成值.如果Hibernate可以为主键生成值,为什么它不能为简单属性生成?
使用hibernate实现联合查询有哪些替代方法?我知道hibernate目前不支持联合查询,现在我看到建立联合的唯一方法是使用视图表.
另一种选择是使用普通的jdbc,但这样我就会放弃所有的示例/条件查询好东西,以及hibernate对表/列执行的hibernate映射验证.
我正在尝试使用Spring IoC这样的接口:
public interface ISimpleService<T> {
void someOp(T t);
T otherOp();
}
Run Code Online (Sandbox Code Playgroud)
Spring可以根据泛型类型参数T提供IoC吗?我的意思是,像这样:
public class SpringIocTest {
@Autowired
ISimpleService<Long> longSvc;
@Autowired
ISimpleService<String> strSvc;
//...
}
Run Code Online (Sandbox Code Playgroud)
当然,我上面的例子不起作用:
expected single matching bean but found 2: [serviceLong, serviceString]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessAfterInstantiation(AutowiredAnnotationBeanPostProcessor.java:243)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:957)
Run Code Online (Sandbox Code Playgroud)
我的问题:是否可以提供类似的功能,只需对接口或实现类进行最少的修改?我知道我可以使用@Qualifiers,但我希望尽可能简单.
Mojarra JSF 2的实现具有以下上下文参数:
com.sun.faces.numberOfViewsInSession (默认为15)com.sun.faces.numberOfLogicalViews (默认为15)他们之间有什么区别?文档中没有提到这些内容.我的应用程序在ViewExpiredException某些页面遇到问题,但在我们将这些设置提高到(更高)值后,我们就停止了问题.
我的应用程序是一个财务,重量级,支持Ajax的应用程序(有些屏幕有50多个输入,可以选择通过AJAX添加更多数据/输入).
这种行为可能是什么原因?我知道第一个参数定义了会话中保存的"页面"的数量,这对于后退按钮可能很有用,但我触发的用例ViewExpiredException不使用后退按钮.第二个参数是指什么?如果我保持在同一个屏幕但通过AJAX继续添加大量数据,这是否会导致需要更多的逻辑视图用于页面?
如何实现一个循环列表,当它填满时覆盖最旧的条目?
对于一点背景,我想在GWT中使用循环列表; 所以使用第三方库不是我想要的.
我正在按照步骤启用远程调试(https://developers.google.com/chrome/mobile/docs/debugging).当我到达第4步时,Chrome for Desktop将返回"此网页不可用".
在Chrome for Android中选中"启用USB网络调试".
我的设备上启用了"USB Debugging"(根据Nexus S,CM9).
"adb devices"命令返回" 设备号设备".
"adb forward ..."命令返回:*守护程序未运行.现在在端口5037上开始**守护进程成功启动*
我在Windows 7上运行最新的ADB,cmd作为管理员.
android google-chrome remote-debugging google-chrome-devtools
我一直在使用spring一段时间,但我总是想知道它是如何工作的,更具体地说,它们如何加载和编织只用接口或@annotation标记的bean /类.
对于xml声明,很容易看出spring如何预处理我的bean(它们是在spring读取的xml上下文中声明的),但是对于仅标注注释的类,我看不出它是如何工作的,因为我没有将任何代理传递给jvm左右.
我相信有一些Java/JVM钩子允许你通过某种标准预处理类,但我无法在文档上找到任何东西.
有人能指点我一些文件吗?这与java.lang.instrument.ClassFileTransformer API有关吗?
有没有办法从远程变更集中删除a,或删除整个变更集?我意外地将.war文件推送到远程仓库,我想将其删除.
我与管理人员存在一些问题,因为他们认为(直观地)创建桌面应用程序比创建Web应用程序更容易(因为您的约束较少).但在我看来,由于某些原因,它更难:
我正在寻找GUI与桌面应用程序的坚实推理.我坚信桌面很难开发,因为我有一些工具包的经验,但如果有人在乎其他方面做出反应,请随意根据你的推理.
编辑:我恢复了我原来的问题,因为有人编辑了它,它丢失了原始内容.如果有人选择编辑问题,请发布一些有意义的评论,这样我至少可以知道为什么某些部分被更改了.
是否可以在普通的JPA或JPA + Hibernate扩展中声明一个复合键,其中复合键的一个元素是一个序列?
这是我的复合类:
@Embeddable
public class IntegrationEJBPk implements Serializable {
//...
@ManyToOne(cascade = {}, fetch = FetchType.EAGER)
@JoinColumn(name = "APPLICATION")
public ApplicationEJB getApplication() {
return application;
}
@Column(name = "ENTITY", unique = false, nullable = false, insertable = true, updatable = true)
public String getEntity() {
return entity;
}
@GeneratedValue(strategy = GenerationType.AUTO, generator = "INTEGRATION_ID_GEN")
@SequenceGenerator(name = "INTEGRATION_ID_GEN", sequenceName = "OMP_INTEGRATION_CANONICAL_SEQ")
@Column(name = "CANONICAL_ID", unique = false, nullable = false, insertable = true, updatable = true)
public String getCanonicalId() …Run Code Online (Sandbox Code Playgroud)