我有两个实体类,称为“用户”和“组”,这两个保留字都需要分隔,以便数据库将它们接受为表。用以下方式注释实体:
@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) 我正在努力使用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) 我有一个名为的域类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特定的Flight是departure还是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) 我的域模型及其关联如下:
Customer有很多RegionsRegion有很多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稍后引用这个对象,所以我不能有两个单独的变量.
我将如何在实体框架中实现这一目标?
我一直忙于在GlassFish 3.1上设置身份验证,特别是JDBC领域.我一直在假设:
我无处可配置"User_Group"表,但是我想知道服务器如何能够将用户与组匹配.不用说它没用.然而,仔细检查表明:
这是正确的,如果是这样,为什么要经历创建单独的"组"表的麻烦?由于看起来每次登录只能有一个组列表("email_address"),只是简单地将一个名为"groups"的列添加到"User"表并完全丢弃"Group"表就不那么容易了吗?
谢谢!
我有一个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不好
我想在我的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)
谢谢!
java ×3
jpa ×3
jakarta-ee ×2
java-ee ×2
c# ×1
criteria-api ×1
deployment ×1
eclipselink ×1
glassfish ×1
jdbc ×1
nginx ×1
unicorn ×1
url ×1