也许这是一个愚蠢的问题,但是,对于C#来说,我是一个新的合适的人(更多来自Java背景)并且在我看到的有关属性的getter和setter的不同示例之间感到困惑.
在某些情况下,代码如下所示:
private string _something;
public string Something
{
get { return _something; }
set { _something = value; }
}
Run Code Online (Sandbox Code Playgroud)
但是,在其他示例中,他们不使用此支持memeber,因此更像是这样:
public string Something { get; set; }
Run Code Online (Sandbox Code Playgroud)
我没有看到使用这些支持变量(_something)的好处,除非你有一些关于变量设置的复杂逻辑.
我正在使用后一种方法编写我的程序,但想检查我没有错过任何东西.
有人可以解释为什么人们选择做前者吗?这是更好的"良好做法"吗?
非常感谢!
我有一个关于Hibernate的问题.
我有两个具有多对一关系的对象:
例如:对象1:
public class Person {
@Basic
@Column(length = 50)
protected String name;
@NotFound(action=NotFoundAction.IGNORE)
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "groupCode", referencedColumnName = "code", updatable=false)
protected Group group;
...all the getters and setters...
}
Run Code Online (Sandbox Code Playgroud)
对象2:
public class Group {
@Id
@Basic
@Column(length = 3, nullable = false)
protected String code;
@Basic
@Column(length = 30, nullable = false)
protected String groupName;
@Basic
@Column(precision = 15, scale = 0)
protected long exampleFieldId;
...rest of code....
}
Run Code Online (Sandbox Code Playgroud)
我试图让这个例子尽可能简单.我的问题是Person上的关联对象(Group)可以为null.目前,当我加载一个特定的Person并抛出异常时,Hibernate会加载一个Group实例,因为它无法将exampleFieldId设置为null(因为它是一个基本类型).
我可以通过将long更改为Long来停止此错误但是,我会认为Person上的Group对象应该为null,因此首先没有加载Group对象?
有没有人知道Hibernate是否加载了相关对象而不管它是否为空,或者我是否错过了一些重要的注释?
谢谢
我正在尝试编写类似于的查询:
INSERT INTO SomeTable(field1, field2)
SELECT 'blah' AS field1,
MAX(AnotherTable.number) AS field2
FROM AnotherTable
ON DUPLICATE KEY
UPDATE field1= 'blah', field2 = MAX(AnotherTable.number)
Run Code Online (Sandbox Code Playgroud)
我收到错误代码:1111无效使用组功能.
阅读MySql文档:
http://dev.mysql.com/doc/refman/5.1/en/insert-select.html
感兴趣的是:
" 在ON DUPLICATE KEY UPDATE的值部分中,只要在SELECT部分中不使用GROUP BY,就可以引用其他表中的列.一个副作用是您必须在值部分中限定非唯一列名. "
这是我看到的问题吗?我没有在Select语句中专门做GROUP BY,但是通过使用聚合函数(Max),我可能会隐式分组.
如果有人确切知道我是否隐含地进行了GROUP BY,或者如果有任何其他方式我可以获得所需的结果,那么我会非常感激.
我想让我的@OneToMany和@ManyToOne关系正确.
第1类:
@Entity
public class IdeaProfile {
@Id
@GeneratedValue
private int ideaProfileId;
private String name;
Date dateConcieved;
@OneToOne
@JoinColumn(name="statusCode")
private Status status;
@OneToMany(fetch=FetchType.EAGER, targetEntity=Pitch.class, cascade=CascadeType.ALL)
@JoinColumn(name = "ideaProfileId")
private List<Pitch> pitchs;
....getters and setters....
Run Code Online (Sandbox Code Playgroud)
等级2:
@Entity
public class Pitch {
@Id
@GeneratedValue
private int id;
@ManyToOne
@JoinColumn(name = "ideaProfileId")
private IdeaProfile ideaProfile;
private Date date;
private String notes;
....getters and setters....
Run Code Online (Sandbox Code Playgroud)
当我加载或保存新记录时,这种关系似乎正常工作:
Hibernate: insert into IdeaProfile (dateConcieved, genreCode, name, statusCode) values (?, ?, ?, ?)
Hibernate: insert into Pitch (date, …Run Code Online (Sandbox Code Playgroud) 我一直在看,在 Python 中看不到任何与我有相同问题的人。
我很可能在这里很愚蠢,但我试图找出一个需要几个参数的方法。在我的测试中,我只想返回一个值而不考虑参数(即对于每个调用只返回相同的值)。因此,我一直在尝试使用“通用”参数,但显然我做错了什么。
任何人都可以发现我的问题吗?
from mockito import mock, when
class MyClass():
def myfunction(self, list1, list2, str1, str2):
#some logic
return []
def testedFunction(myClass):
# Logic I actually want to test but in this example who cares...
return myClass.myfunction(["foo", "bar"], [1,2,3], "string1", "string2")
mockReturn = [ "a", "b", "c" ]
myMock = mock(MyClass)
when(myMock).myfunction(any(list), any(list), any(str), any(str)).thenReturn(mockReturn)
results = testedFunction(myMock)
# Assert the test
Run Code Online (Sandbox Code Playgroud)
我已经设法在上面非常基本的代码中复制了我的问题。在这里,我只想为任何参数集存根 MyClass.myfunction。如果我不考虑参数 - 即:
when(myMock).myfunction().thenReturn(mockReturn)
Run Code Online (Sandbox Code Playgroud)
然后没有任何返回(因此存根不起作用)。但是,使用“通用参数”会出现以下错误:
when(myMock).myfunction(any(list), any(list), any(str), any(str)).thenReturn(mockReturn)
TypeError: 'type' object is not iterable …Run Code Online (Sandbox Code Playgroud) hibernate ×2
java ×2
many-to-one ×2
.net ×1
annotations ×1
c# ×1
mockito ×1
mysql ×1
one-to-many ×1
python ×1
python-2.7 ×1
sql ×1
stubbing ×1
typeerror ×1