小编Lau*_*ens的帖子

JPA 数据库分隔符

我有两个实体类,称为“用户”和“组”,这两个保留字都需要分隔,以便数据库将它们接受为表。用以下方式注释实体:

@Table(name = "\"USER\"")
Run Code Online (Sandbox Code Playgroud)

确实有效,但我读到 EclipseLink 允许您指定一个自动分隔名称的全局变量。根据http://dev.eclipse.org/mhonarc/lists/eclipselink-users/msg03434.html,您需要在orm.xml中包含以下内容:

<persistence-unit-metadata>
    <persistence-unit-defaults>
        <delimited-identifiers/>
    </persistence-unit-defaults>
</persistence-unit-metadata>
Run Code Online (Sandbox Code Playgroud)

然而,我已经注释了我的类,并且没有 orm.xml,只有 persistence.xml,根据相同的来源,我不能包含该属性。还有其他地方我可以指定吗:

eclipselink.database.delimiters = true
Run Code Online (Sandbox Code Playgroud)

当实际的实体管理器通过@PersistenceContext注入时?

谢谢!

更新:

谢谢詹姆斯。我最终得到了以下结果orm.xml,它完美地完成了任务!

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="1.0" xmlns="http://java.sun.com/xml/ns/persistence/orm"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                           xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd">
<persistence-unit-metadata>
    <persistence-unit-defaults>
        <delimited-identifiers/>
    </persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
Run Code Online (Sandbox Code Playgroud)

jpa eclipselink jakarta-ee

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

Criteria API组合AND/OR

我正在努力使用Criteria API创建查询.以下SQL查询返回我需要的结果:

SELECT * FROM MODEL WHERE MANUFACTURER_ID = 1 AND SHORTNAME LIKE '%SF%' OR LONGNAME LIKE '%SF%';
Run Code Online (Sandbox Code Playgroud)

我使用条件API编写了以下代码:

public List<Model> findAllByManufacturer(Manufacturer manufacturer,
        String pattern) {
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Model> cq = cb.createQuery(Model.class);
    Root<Model> m = cq.from(Model.class);
    cq.select(m);
    Join<Model, Manufacturer> mf = m.join("manufacturer");
    Predicate p = cb.equal(mf.get("id"), manufacturer.getId());
    p = cb.and(cb.like(cb.upper(m.<String>get("shortName")),
            pattern.toUpperCase()));
    p = cb.or(cb.equal(cb.upper(m.<String>get("longName")),
            pattern.toUpperCase()));
    cq.where(p);
    return em.createQuery(cq).getResultList();
}
Run Code Online (Sandbox Code Playgroud)

当我从逻辑上思考它时,它应该工作:

Predicate p = cb.equal(mf.get("id"), manufacturer.getId());
Run Code Online (Sandbox Code Playgroud)

WHERE MANUFACTURER_ID = 1

p = cb.and(cb.like(cb.upper(m.<String>get("shortName")),
                pattern.toUpperCase()));
Run Code Online (Sandbox Code Playgroud)

和SHORTNAME一样'%SF%'

p = cb.or(cb.equal(cb.upper(m.<String>get("longName")),
                pattern.toUpperCase())); …
Run Code Online (Sandbox Code Playgroud)

java jpa java-ee criteria-api

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

双向一对一映射到多个字段

我有一个名为的域类Flight,它代表已飞行的航班。我有另一个名为的类Movement,它可以代表出发或到达,并包含日期和时间以及发生运动的机场。

@Entity
public class Flight implements Serializable {

    private Movement departure;
    private Movement arrival;
}

@Entity
public class Movement implements Serializable {
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateTime;
    @ManyToOne
    private Airport airport;

    private Flight flight;
}
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何正确注释班级中的flight字段Movement。我认为Flight类必须是关系的拥有方,因为如果不是,则无法判断Movement特定的Flightdeparture还是arrival

@OneToOne
private Movement departure;
@OneToOne
private Movement arrival;
Run Code Online (Sandbox Code Playgroud)

然而,这带来了一个问题。我不能在地图flight领域Movement的两个字段类:

// This obviously does not work
@OneToOne(mappedBy = "departure")
@OneToOne(mappedBy = "arrival")
private Flight …
Run Code Online (Sandbox Code Playgroud)

java jpa jakarta-ee

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

在Entity Framework中查找或创建对象

我的域模型及其关联如下:

  • Customer有很多Regions
  • Region有很多Locations

我们的客户向我们提供了一个包含以下列的CSV文件:

  • 顾客姓名
  • 地区名称
  • 地点名称
    • 纬度
    • 经度
    • ...

根据这些信息,我必须按名称查找或创建客户,按名称查找或创建区域,最后按名称查找或更新位置.

我尝试过以下方法:

var customer = from c in _data.Customer
               where c.Name == cells[0]
               select c;

if (customer == null)
    customer = new Customer(...);
Run Code Online (Sandbox Code Playgroud)

我将遵循用于查找或创建/更新的区域和位置相同的图案,然而,我碰到的问题是,LINQ查询的类型不能被转换为Customer上线-object customer = new customers();.我需要customer稍后引用这个对象,所以我不能有两个单独的变量.

我将如何在实体框架中实现这一目标?

c# entity-framework

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

GlassFish JDBC领域组成员

我一直忙于在GlassFish 3.1上设置身份验证,特别是JDBC领域.我一直在假设:

  • "用户"表包含登录名("email_address")和密码("密码")
  • "组"表包含组名列表("名称")
  • "User_Group"表与用户和组匹配.

我无处可配置"User_Group"表,但是我想知道服务器如何能够将用户与组匹配.不用说它没用.然而,仔细检查表明:

  • "用户"表包含登录名("email_address")和密码("密码")
  • "组"表包含登录名("email_address")作为主键,以及以逗号分隔的组名列表("Administrator,User")在一列中("组")

这是正确的,如果是这样,为什么要经历创建单独的"组"表的麻烦?由于看起来每次登录只能有一个组列表("email_address"),只是简单地将一个名为"groups"的列添加到"User"表并完全丢弃"Group"表就不那么容易了吗?

谢谢!

java jdbc glassfish java-ee

2
推荐指数
1
解决办法
5949
查看次数

Rails 3 - url中的友好参数(GET)

我有一个rails 3应用程序,现在我为我的目录实现过滤器.过滤器通过GET请求将数据传递给控制器​​.因此,在我提交表单(应用搜索)后,我在浏览器中有这样的链接:

http://localhost:3001/shoes?filter%5BShoeBottomType%5D%5B%5D=2&filter%5BShoeClassification%5D%5B%5D=1&filter%5BShoeClassification%5D%5B%5D=2&filter%5BShoeElation%5D%5B%5D=3&filter%5BShoeElation%5D%5B%5D=4&filter%5BShoeElation%5D%5B%5D=5&filter%5BShoeLiningColor%5D%5B%5D=2&filter%5BShoeLiningColor%5D%5B%5D=3&filter%5BShoeLiningColor%5D%5B%5D=4&filter%5BShoeTopColor%5D%5B%5D=1&filter%5BShoeTopColor%5D%5B%5D=2&filter%5Bonly_action%5D%5B%5D=1&page=2
Run Code Online (Sandbox Code Playgroud)

有没有办法让URL更漂亮?

PS我不想使用POST请求,因为我读到它对SEO不好

url ruby-on-rails

2
推荐指数
1
解决办法
2317
查看次数

让NGINX用独角兽提供.gz压缩资产文件

我想在我的nginx和独角兽中激活gzip压缩:

我在config/unicorn.rb的 rails应用程序中有这个:

working_directory "/home/user/project.com/current"
shared_path  = '/home/user/project.com/shared'
pid "#{shared_path}/pids/unicorn.pid"
stderr_path "#{shared_path}/log/unicorn.log"
stdout_path "#{shared_path}/log/unicorn.log"
listen '/tmp/unicorn.project.sock'
worker_processes 2
timeout 30
Run Code Online (Sandbox Code Playgroud)

我在我的rails app中的nginx.conf中有这个:

upstream unicorn {
 server unix:/tmp/unicorn.project.sock fail_timeout=0;
}

 server {
       listen 80 default;
       root ~/project.com/current/public;
       try_files $uri/index.html $uri @unicorn;

       location @unicorn {
                           proxy_pass http://unicorn;
                         }
 error_page 500 502 503 504 /500.html;
}
Run Code Online (Sandbox Code Playgroud)

如何启用此配置,如:

  gzip_static on;
  expires max;
  add_header Cache-Control public;
Run Code Online (Sandbox Code Playgroud)

谢谢!

deployment nginx unicorn

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