对于这个太基本的问题,很抱歉,我没有使用Hibernate的经验,并尝试映射这些类,但没有找到将对象映射到代表列表的另一个对象的示例。
“关键字”属性曾经是字符串列表,如:
import tkinter as tk
import rockpaperscissor as rps
class MyFrame(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.pack()
self.value = tk.StringVar()
self.result = tk.StringVar()
self.choice = ('rock', 'paper', 'scissor')
self.rps = rps.RockPaperScissor()
for i in self.choice:
tk.Radiobutton(self,
text=i,
variable=self.value,
value=i).pack()
tk.Button(self, text='play', command=self.play).pack()
tk.Label(self, textvariable=self.result).pack() # textvariable
def play(self):
playerA = self.value.get()
playerB = rps.computer()
self.rps.play(playerA, playerB)
self.result.set('result: {0}'.format(self.rps.get_result())) # get_result()
if __name__ == '__main__':
MyFrame().mainloop()
但是我将它封装在一个类上以添加更专业的行为,遵循本书" Clean Code"来自Bob C. Martin。但我不知道如何映射它,就好像它在列表是在自己的类中时具有相同的行为。
List<String> keywords;
答案 0 :(得分:1)
看起来你将这个成员拆分成一个单独的类主要是为了添加ofPhrase()静态方法。
我建议将该方法放在自己的非JPA类中,命名为KeywordTokenizer,并使其成为非静态方法。这将允许您单独测试tokenizer逻辑,并在测试使用它的其他类时模拟ofPhrase()方法。我想鲍勃叔叔也支持这一点。
更一般地说 - 在我简陋的经历中,JPA对象应该仅用于定义数据结构 - 所有JPA注释内容都足够复杂,值得拥有自己的类。使用&#34;服务&#34;类型类,如上面建议的KeywordTokenizer,包括任何添加的逻辑。