我一直在使用Java/C++来回移动,所以我搞砸了我的控制台输出并意外地编写了如下行:
cout << "num" + numSamples << endl;
cout << "max" + maxSampleValue << endl;
Run Code Online (Sandbox Code Playgroud)
每一个都给了我在程序中的一些其他字符串.我现在意识到我的错误,但是C++解释这些行是什么,以便它们在我的程序中输出不同字符串的不同部分?
我有一个拥有另一个实体的实体:
//psuedocode
public class ClassA{
private String name;
@OneToOne
private ClassB classb;
}
public class ClassB{
private String thing1;
private String thing2;
private String thing3;
}
Run Code Online (Sandbox Code Playgroud)
当我检索ClassA对象时,我不想看到ClassB.thing3,但我确实想看到thing1和thing2:
{
"name":"classa",
"classb":{
"thing1":"hi",
"thing2":"there"
}
}
Run Code Online (Sandbox Code Playgroud)
但如果我查询ClassB,我想看到一切:
{"thing1":"hi",
"thing2":"there",
"thing3":"joseph"}
Run Code Online (Sandbox Code Playgroud)
所以我不能只在thing3上放一个忽略注释,因为那时我会在第二次获取时忽略它.我尝试了Converter<ClassB>,但是这迫使我实施toString()和fromString()对JSON,其死亡的JSON对象转换为Java端(转换器需要一个字符串,但得到的对象,而不是).
我想尽可能避免自己构建/解析JSON对象,如果可能的话让我的json提供者完成工作.我在约翰逊.
我有一个问题,我不能持久或合并一个只包含一个ID和一组其他对象的对象.如果我添加另一个字段,它将正常提交事务.此外,如果我将ID生成策略更改为AUTO,它也将起作用.
我团队的其他成员使用"IDENTITY"代替"AUTO",所以我希望与他们保持一致.他们的实体不仅仅是一个ID + Collection,所以它适用于他们.以下是我想要做的工作:
@Entity
public class Filter implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Long id;
@OneToMany( fetch = FetchType.EAGER, orphanRemoval = true, cascade = { CascadeType.ALL } )
private ArrayList<Rule> rules = new ArrayList<>();
public Filter() {
}
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
org.apache.openjpa.persistence.PersistenceException: ERROR: syntax error at or near ")"
Position: 25 {prepstmnt 693640431 INSERT INTO Filter () VALUES ()} [code=0, state=42601]
FailedObject: middle.ware.Filter@630cd05
Run Code Online (Sandbox Code Playgroud)
本质上,因为它只是一个ID和一个连接表,它在尝试持久化或合并Filter而没有任何字段时就会死掉.
解决方法
将GenerationType.IDENTITY更改为GenerationType.AUTO.
- 唯一的骗局似乎是初始启动主键跳转50,然后它开始递增1.
将GenerationType更改为TABLE
- 这似乎是AUTO选择的.
向实体添加任意字段(即String test ="test").
- 简单地让实体再增加一个字段使其持久化.但是,我不需要这个领域; …
我有一个Oracle函数,它接受一个POINTS%ROWTYPE表.我想使用CriteriaBuilder类从JPA调用此函数,该类具有数据库函数的功能.当我尝试构建查询时,它会死于抱怨ArrayLists不是函数的有效查询参数.
如何将ArrayList中的ArrayList传入Oracle函数?
Oracle函数签名:
CREATE OR REPLACE FUNCTION LOCATION_CONTAINS
(
LATITUDE_IN IN DOUBLE PRECISION,
LONGITUDE_IN IN DOUBLE PRECISION,
points IN types_pkg.point_array,
numPoints IN INTEGER
)
Run Code Online (Sandbox Code Playgroud)
Oracle类型:
create or replace package types_pkg
as
type point_array is table of FILTERPOINT%ROWTYPE;
end types_pkg;
Run Code Online (Sandbox Code Playgroud)
JPA Criteria Builder调用
List<FilterPoint> points = getPoints(location_name);
int numPoints = points.size();
Expression ex =
cb.function( "LOCATION_CONTAINS",
Integer.class,
entity.get( "latitude" ),
entity.get( "longitude" ),
cb.literal( points ),
cb.literal( numPoints ) );
Run Code Online (Sandbox Code Playgroud)
例外:
org.apache.openjpa.persistence.ArgumentException:
The specified parameter of type "class middle.ware.FilterPoint" is not …Run Code Online (Sandbox Code Playgroud) 举例来说,您有一堆函数都需要检查登录验证。首先,它看起来像:
public Response createThing(){
if(!validLogin(httpRequest, uriInfo)){
return Response.status(Response.Status.FORBIDDEN);
}
//Do the function
}
Run Code Online (Sandbox Code Playgroud)
第一个代码块存在于每个服务调用的顶部,但我不知道如何将其包装到另一个函数中,因为它包含一个 return 语句。我想要类似于以下内容的东西:
public Response createThing(){
validateLogin(httpRequest, uriInfo);
//Do the function
}
Run Code Online (Sandbox Code Playgroud)
或者
public Response createThing(){
//Implied check somehow?
//Do the function
}
Run Code Online (Sandbox Code Playgroud)
我确信人们使用某种模式或惯例。谢谢。
我有A级,
class A{
private:
int num;
public:
A(int n){ num = n; };
int getNum(){
return num;
}
A operator+(const A &other){
int newNum = num + other.getNum();
return A(newNum);
};
};
Run Code Online (Sandbox Code Playgroud)
为什么会other.getNum()出错?我可以other.num很好地访问other()中的变量,但似乎我不能使用任何其他函数.
我得到的错误就是这样的
参数无效:候选者是int getNum().
我可以写int test = getNum()但不是int test = other.getNum(),但我几乎可以肯定我能以other.getNum()某种方式打电话.
我忽略了什么吗?
java ×3
openjpa ×3
c++ ×2
jpa ×2
class ×1
cout ×1
database ×1
function ×1
json ×1
oracle ×1
overloading ×1
persistence ×1
plsql ×1
postgresql ×1
return ×1
validation ×1