小编vin*_*nga的帖子

如何在JPA 2.0元模型中自动生成列名作为静态最终字符串?

在一些JPA注释中,我想直接在代码中使用字段名称来代替容易出错的字符串:

@javax.persistence.OrderBy(value = User_.registrationDate.getName())
public List<PlugConfig> getPlugConfigs() { ... }
Run Code Online (Sandbox Code Playgroud)

但上面不会编译,因为获取名称我必须使用非常量表达式的函数(User_生成JPA @StaticMetamodel).

是否有可能以任何方式使用元模型或者我坚持使用直接字符串常量?有没有办法为元模型自动生成这样的字符串常量?(我正在使用maven-processor-plugin进行生成)

java jpa maven

6
推荐指数
2
解决办法
1543
查看次数

allocateSize> 1的@SequenceGenerator会生成重复的主键

我正在使用上面的代码来生成id:

@Id
@GeneratedValue(generator = "seqq")
@SequenceGenerator(name = "seqq", sequenceName = "seqq", allocationSize = 20, initialValue = 1)
public long getId() {
    return id;
}
Run Code Online (Sandbox Code Playgroud)

我还更新了persistence.xml:

   <property name="hibernate.id.new_generator_mappings" value="true"/>
Run Code Online (Sandbox Code Playgroud)

并在数据库中更新了ddl:

CREATE SEQUENCE seqq
  INCREMENT 20
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 9171
  CACHE 1;
Run Code Online (Sandbox Code Playgroud)

由于这个allocationSize = 20与增量值相同.但是,我得到任意错误,说重复键值违反了唯一约束"myobjects_pkey".通常在首次保存试用后会发生此错误.看来hibernate试图用相同的Id来持久化实体.但是,START确保该行高于表id中的任何行.如何消除重复约束错误?

java hibernate

5
推荐指数
1
解决办法
2057
查看次数

有没有干净的方法将上下文数据传递给@Asynchronous ejb 调用?

在wildfly 中,我异步执行无状态ejb 方法(它用@Asynchronous 注释映射)。在调用方法中,我在线程本地中有一些上下文信息。将此数据传递给异步方法的最佳方法是什么?我不想向异步方法签名添加其他参数。

java asynchronous wildfly

5
推荐指数
1
解决办法
1056
查看次数

OpenEJB - 为JUnit配置数据源

我有正确配置OpenEJB 3.1.3数据源的问题.我尝试配置连接到postgres db,但是我调试测试我得到默认的hsql连接参数.

这是我的测试类:

@RunWith(ApplicationComposer.class)
public class OpenEJBTest {
    @EJB
    Files fb;

    @Test
    public void testSth() {
        List<UploadSession> uploadNotFinishedSessions = fb.getUploadNotFinishedSessions();
    }

    @Module
    public EjbJar beans() {
        EjbJar ejbJar = new EjbJar("beans");
        ejbJar.addEnterpriseBean(new StatelessBean(FilesBean.class));
        ejbJar.addEnterpriseBean(new StatelessBean(FilesUtilBean.class));
        ejbJar.addEnterpriseBean(new StatelessBean(ServerFilesBean.class));
        ejbJar.addEnterpriseBean(new StatelessBean(UserUtilBean.class));
        return ejbJar;
    }

    @Module
    public PersistenceUnit persistence() {
        PersistenceUnit unit = new PersistenceUnit("postgresPU", HibernatePersistence.class.getName());
        String simpleXml = SimpleXmlUtil.toSimpleXml(unit);
        System.out.println(simpleXml);
        unit.setJtaDataSource("PostgresDS");
        unit.setNonJtaDataSource("PostgresDSUnmanaged");
        return unit;
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过了:

  1. 将jndi.properties添加到classpath:
postgresPU=new://Resource?type=DataSource
postgresPU.JdbcDriver=org.postgresql.Driver
postgresPU.JdbcUrl=jdbc:postgresql:/localhost:5433/pdb
postgresPU.JtaManaged=true
postgresPU.DefaultAutoCommit=false
postgresPU.UserName=...
Run Code Online (Sandbox Code Playgroud)
  1. 通过openejb.xml配置数据源(位于类路径上)
<Resource id="PostgresDS" type="DataSource">
  JdbcDriver  org.postgresql.Driver
  JdbcUrl …
Run Code Online (Sandbox Code Playgroud)

persistence java-ee openejb

4
推荐指数
1
解决办法
1721
查看次数

vaadin 网格的组件渲染器

我想从 vaadin 表切换到广受好评的网格,但我不知道如何克服网格无法渲染组件的限制。在表中,我有一列显示具有动态数量的按钮的 Horizo​​ntalLayout。网格允许使用按钮渲染器,但这意味着每一列中只会渲染一个按钮,我需要它更灵活。也许我可以编写自己的 Rendere 来支持我需要的内容,但它需要一些较低级别/gwt/javascript 编程,并且我不确定是否可以实现所需的结果。亲爱的vaadin小伙伴们,你们有什么推荐吗?

javascript java vaadin

3
推荐指数
1
解决办法
4031
查看次数